public class JsonUtil extends Object
| 限定符和类型 | 字段和说明 |
|---|---|
private static org.slf4j.Logger |
log |
protected static com.fasterxml.jackson.databind.ObjectMapper |
OM |
| 构造器和说明 |
|---|
JsonUtil() |
| 限定符和类型 | 方法和说明 |
|---|---|
static com.fasterxml.jackson.databind.JavaType |
getCollectionType(Class<?> collectionClass,
Class<?>... elementClasses)
获取泛型的 Collection Type
|
static String |
key2Val(String json,
List<JsonNodeInfo> infos)
获取json节点的值 可以多层获取
|
static String |
key2Val(String json,
String key)
获取json节点的值
|
static <T> T |
mapPojo(Map<String,Object> map,
Class<T> clazz)
map转为 bean
|
static <T> T |
nodeBean(com.fasterxml.jackson.databind.JsonNode node,
Class<T> clazz)
JsonNode 转bean
|
private static com.fasterxml.jackson.databind.JsonNode |
nodeValue(com.fasterxml.jackson.databind.JsonNode node,
JsonNodeInfo info)
获取节点信息
|
static com.fasterxml.jackson.databind.ObjectMapper |
om()
获取对象
|
static String |
printerJson(Object obj)
美化json
|
static String |
toJson(Object obj)
转换为 JSON 字符串
|
static <T> Map<String,T> |
toMap(String json)
json 字符串转为map
|
static <T extends Serializable> |
toNode(T t)
对象转 JsonNode
|
static <T> T |
toPojo(String json,
Class<T> clazz)
转换为 JavaBean
|
static <T> T |
toPojo(String json,
Function<com.fasterxml.jackson.databind.ObjectMapper,com.fasterxml.jackson.databind.JavaType> function)
反序列化 嵌套泛型带参数的 示例:
bean 结构如下:
public class IotResponse<T>
private T data;
public class IotPageResponse<T>
private List<T> list;
public class IotCardInfoResponse
使用方式:
Function<ObjectMapper, JavaType> f = om -> {
TypeFactory factory = om.getTypeFactory();
JavaType pageType = factory.constructParametricType(IotPageResponse.class, IotCardInfoResponse.class);
return factory.constructParametricType(IotResponse.class, pageType);
};
IotResponse<IotPageResponse<IotCardInfoResponse>> response = JsonUtil.toPojo(json, f);
|
static <T> List<T> |
toPojos(String json,
Class<T> clazz)
转换为 JavaBean 集合
|
protected static final com.fasterxml.jackson.databind.ObjectMapper OM
private static final org.slf4j.Logger log
public static <T> T mapPojo(Map<String,Object> map, Class<T> clazz)
T - 类型map - mapclazz - 类型public static <T> T toPojo(String json, Class<T> clazz)
json - jsonclazz - 类型public static <T> T toPojo(String json, Function<com.fasterxml.jackson.databind.ObjectMapper,com.fasterxml.jackson.databind.JavaType> function)
public class IotResponse<T>
private T data;
public class IotPageResponse<T>
private List<T> list;
public class IotCardInfoResponse
使用方式:
Function<ObjectMapper, JavaType> f = om -> {
TypeFactory factory = om.getTypeFactory();
JavaType pageType = factory.constructParametricType(IotPageResponse.class, IotCardInfoResponse.class);
return factory.constructParametricType(IotResponse.class, pageType);
};
IotResponse<IotPageResponse<IotCardInfoResponse>> response = JsonUtil.toPojo(json, f);
T - 实体json - jsonfunction - 获取泛型的函数public static <T> List<T> toPojos(String json, Class<T> clazz)
json - jsonclazz - 类型public static <T> T nodeBean(com.fasterxml.jackson.databind.JsonNode node,
Class<T> clazz)
T - 实体对象类型node - nodeclazz - 类型public static com.fasterxml.jackson.databind.JavaType getCollectionType(Class<?> collectionClass, Class<?>... elementClasses)
collectionClass - 泛型的CollectionelementClasses - 元素类public static String key2Val(String json, String key)
json - jsonkey - 值public static String key2Val(String json, List<JsonNodeInfo> infos)
json - jsoninfos - 每层的信息private static com.fasterxml.jackson.databind.JsonNode nodeValue(com.fasterxml.jackson.databind.JsonNode node,
JsonNodeInfo info)
node - 节点info - 具体信息public static com.fasterxml.jackson.databind.ObjectMapper om()
public static <T extends Serializable> com.fasterxml.jackson.databind.JsonNode toNode(T t)
T - 类型t - 入参Copyright © 2024. All rights reserved.