package core.framework.api.util;
import com.fasterxml.jackson.databind.JavaType;
import core.framework.impl.json.JSONMapper;
import java.io.IOException;
import java.io.UncheckedIOException;
import java.lang.reflect.Type;
/**
* @author neo
*/
public final class JSON {
public static <T> T fromJSON(Type instanceType, String json) {
try {
JavaType javaType = JSONMapper.OBJECT_MAPPER.getTypeFactory().constructType(instanceType);
return JSONMapper.OBJECT_MAPPER.readValue(json, javaType);
} catch (IOException e) {
throw new UncheckedIOException(e);
}
}
public static <T> T fromJSON(Class<T> instanceType, String json) {
try {
return JSONMapper.OBJECT_MAPPER.readValue(json, instanceType);
} catch (IOException e) {
throw new UncheckedIOException(e);
}
}
public static String toJSON(Object instance) {
try {
return JSONMapper.OBJECT_MAPPER.writeValueAsString(instance);
} catch (IOException e) {
throw new UncheckedIOException(e);
}
}
public static <T extends Enum<?>> T fromEnumValue(Class<T> valueType, String jsonValue) {
return JSONMapper.OBJECT_MAPPER.convertValue(jsonValue, valueType);
}
public static <T extends Enum<?>> String toEnumValue(T value) {
return JSONMapper.OBJECT_MAPPER.convertValue(value, String.class);
}
}