Jackson解析嵌套对象工具类
Jackson解析嵌套对象工具类
package com.jareny.generate.jackson; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.JavaType; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; import lombok.SneakyThrows; import java.util.List; import java.util.Map; /** * Json解析复杂对象,适用于泛型入参 */ public class JsonUtlis { private final static ObjectMapper objectMapper = new ObjectMapper(); static { // 转换为格式化的json objectMapper.enable(SerializationFeature.INDENT_OUTPUT); // 如果json中有新增的字段并且是实体类类中不存在的,不报错 objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); } public static ObjectMapper getInstance() { return objectMapper; } @SneakyThrows public static String toJson(Object data) { return objectMapper.writeValueAsString(data); } @SneakyThrows public static <K, V> Map<K, List<V>> toMapList(String json, Class<K> key, Class<V> value) { TypeReference<Map<K, List<V>>> javaType = new TypeReference<Map<K, List<V>>>() { }; return objectMapper.readValue(json, javaType); } @SneakyThrows public static <K, V> List<Map<K, V>> toListMap(String json, Class<K> key, Class<V> value) { TypeReference<List<Map<K, V>>> javaType = new TypeReference<List<Map<K, V>>>() { }; return objectMapper.readValue(json, javaType); } @SneakyThrows public static <K, V> Map<K, V> toMap(String json, Class<K> keyType, Class<V> valueType) { JavaType javaType = objectMapper.getTypeFactory().constructMapType(Map.class, keyType, valueType); return objectMapper.readValue(json, javaType); } @SneakyThrows public static <T> List<T> toList(String jsonData, Class<T> beanType) { JavaType javaType = objectMapper.getTypeFactory().constructParametricType(List.class, beanType); return objectMapper.readValue(jsonData, javaType); } @SneakyThrows public static <T> T toBean(String json, Class<T> beanType) { return objectMapper.readValue(json, beanType); } }
下一篇:
使用WxJava快速接入微信公众号