package core.aws.util; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.JavaType; import com.fasterxml.jackson.databind.MapperFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.util.ISO8601DateFormat; import java.io.IOException; import java.io.UncheckedIOException; import java.lang.reflect.Type; /** * @author neo */ public final class JSON { private static final ObjectMapper OBJECT_MAPPER = createMapper(); private static ObjectMapper createMapper() { ObjectMapper mapper = new ObjectMapper(); mapper.setDateFormat(new ISO8601DateFormat()); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); mapper.configure(MapperFeature.USE_WRAPPER_NAME_AS_PROPERTY_NAME, true); return mapper; } public static <T> T fromJSON(Type instanceType, String json) { try { JavaType javaType = OBJECT_MAPPER.getTypeFactory().constructType(instanceType); return OBJECT_MAPPER.readValue(json, javaType); } catch (IOException e) { throw new UncheckedIOException(e); } } public static <T> T fromJSON(Class<T> instanceType, String json) { try { return OBJECT_MAPPER.readValue(json, instanceType); } catch (IOException e) { throw new UncheckedIOException(e); } } public static String toJSON(Object object) { try { return OBJECT_MAPPER.writeValueAsString(object); } catch (IOException e) { throw new UncheckedIOException(e); } } }