All Downloads are FREE. Search and download functionalities are using the official Maven repository.
Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
io.gitee.loulan_yxq.owner.json.tool.JsonTool Maven / Gradle / Ivy
package io.gitee.loulan_yxq.owner.json.tool;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.type.CollectionType;
import com.fasterxml.jackson.databind.type.MapType;
import com.fasterxml.jackson.databind.type.TypeFactory;
import io.gitee.loulan_yxq.owner.json.base.JsonMap;
import io.gitee.loulan_yxq.owner.json.exception.JsonException;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
/*********************************************************
** json工具类
**
** Date: Created in 2022/1/7 16:17
** @author loulan
** @version 0.0.0
*********************************************************/
public class JsonTool extends JsonToolObjectMapper {
/**
* 将对象转化为json字符串
*
* @param obj 要进行json转化的对象
* @return 转化完成的对象
* @author :loulan
*/
public static String toJson(Object obj) {
return toJsonString(obj);
}
/**
* 将对象转化为json字节数组
*
* @param obj 要进行json转化的对象
* @return 转化完成的字节数组
* @author :loulan
*/
public static byte[] toJsonBytes(Object obj) {
try {
return objectMapper.writeValueAsBytes(obj);
} catch (Exception ex) {
throw new JsonException("obj转json异常", ex);
}
}
/**
* 将对象转化为json字符串
*
* @param obj 要进行json转化的对象
* @return 转化完成的对象
* @author :loulan
*/
public static String toJsonString(Object obj) {
try {
return objectMapper.writeValueAsString(obj);
} catch (Exception ex) {
throw new JsonException("obj转json异常", ex);
}
}
/**
* 解析json为指定的对象
*
* @param json 要进行解析的json数据
* @param clzz 指定类型的class对象
* @return 解析后的指定类型
* @author :loulan
*/
public static T parseObj(String json, Class clzz) {
try {
T t = objectMapper.readValue(json, clzz);
return t;
} catch (Exception ex) {
throw new JsonException("json转obj异常", ex);
}
}
/**
* 解析json为指定的对象
*
* @param json 要进行解析的json数据
* @param clzz 指定类型的class对象
* @return 解析后的指定类型
* @author :loulan
*/
public static T parseObj(byte[] json, Class clzz) {
try {
T t = objectMapper.readValue(json, clzz);
return t;
} catch (Exception ex) {
throw new JsonException("json转obj异常", ex);
}
}
/**
* 解析json为指定类型的List集合
*
* @param json 要进行解析的json数据
* @param clzz 指定类型的class对象
* @return 指定类型的List集合
* @author :loulan
*/
public static List parseList(String json, Class clzz) {
CollectionType collectionType = objectMapper.getTypeFactory().constructCollectionType(ArrayList.class, clzz);
return parse(json, collectionType);
}
/**
* 解析json为指定类型的List集合
*
* @param json 要进行解析的json数据
* @param clzz 指定类型的class对象
* @return 指定类型的List集合
* @author :loulan
*/
public static List parseList(byte[] json, Class clzz) {
CollectionType collectionType = objectMapper.getTypeFactory().constructCollectionType(ArrayList.class, clzz);
return parse(json, collectionType);
}
/**
* 解析json为Map对象
*
* @param json 要进行解析的json数据
* @return 解析后的Map对象
* @author :loulan
*/
public static Map parseMap(String json) {
return parseMap(json, Object.class);
}
/**
* 解析json为Map对象
*
* @param json 要进行解析的json数据
* @return 解析后的Map对象
* @author :loulan
*/
public static Map parseMap(byte[] json) {
return parseMap(json, Object.class);
}
/**
* 解析json为指定类型的Map对象
*
* @param json 要进行解析的json数据
* @param clzz 指定类型的class对象
* @return 解析后指定类型的Map对象
* @author :loulan
*/
public static Map parseMap(String json, Class clzz) {
MapType mapType = objectMapper.getTypeFactory().constructMapType(LinkedHashMap.class, String.class, clzz);
return parse(json, mapType);
}
/**
* 解析json为指定类型的Map对象
*
* @param json 要进行解析的json数据
* @param clzz 指定类型的class对象
* @return 解析后指定类型的Map对象
* @author :loulan
*/
public static Map parseMap(byte[] json, Class clzz) {
MapType mapType = objectMapper.getTypeFactory().constructMapType(LinkedHashMap.class, String.class, clzz);
return parse(json, mapType);
}
/**
* 解析json为{@link JsonMap}对象
*
* @param json 要进行解析的json数据
* @return 解析后JsonMap对象
* @author :loulan
*/
public static JsonMap parseJsonMap(String json) {
MapType mapType = objectMapper.getTypeFactory().constructMapType(JsonMap.class, String.class, Object.class);
return parse(json, mapType);
}
/**
* 解析json为{@link JsonMap}对象
*
* @param json 要进行解析的json数据
* @return 解析后JsonMap对象
* @author :loulan
*/
public static JsonMap parseJsonMap(byte[] json) {
MapType mapType = objectMapper.getTypeFactory().constructMapType(JsonMap.class, String.class, Object.class);
return parse(json, mapType);
}
/**
* 解析json为{@link JsonMap}对象得list集合
*
* @param json 要进行解析的json数据
* @return 解析后JsonMap对象的list集合
* @author :loulan
*/
public static List parseListJsonMap(String json) {
MapType mapType = objectMapper.getTypeFactory().constructMapType(JsonMap.class, String.class, Object.class);
CollectionType collectionType = objectMapper.getTypeFactory().constructCollectionType(ArrayList.class, mapType);
return parse(json, collectionType);
}
/**
* 解析json为{@link JsonMap}对象得list集合
*
* @param json 要进行解析的json数据
* @return 解析后JsonMap对象的list集合
* @author :loulan
*/
public static List parseListJsonMap(byte[] json) {
MapType mapType = objectMapper.getTypeFactory().constructMapType(JsonMap.class, String.class, Object.class);
CollectionType collectionType = objectMapper.getTypeFactory().constructCollectionType(ArrayList.class, mapType);
return parse(json, collectionType);
}
/**
* 将json解析为指定的类型
*
* @param json 要进行解析的json数据
* @param valueTypeRef 类型指引
* @return 解析后的指定类型
* @author :loulan
*/
public static T parse(String json, TypeReference valueTypeRef) {
return parse(json, objectMapper.constructType(valueTypeRef));
}
/**
* 将json解析为指定的类型
*
* @param json 要进行解析的json数据
* @param valueTypeRef 类型指引
* @return 解析后的指定类型
* @author :loulan
*/
public static T parse(byte[] json, TypeReference valueTypeRef) {
return parse(json, objectMapper.constructType(valueTypeRef));
}
/**
* 将json解析为指定的类型(内部使用)
*
* @param json 要进行解析的json数据
* @param javaType 要解析成的类型对象
* @return 解析后的指定类型
* @author :loulan
*/
public static T parse(String json, JavaType javaType) {
try {
return objectMapper.readValue(json, javaType);
} catch (Exception ex) {
throw new JsonException("json解析异常", ex);
}
}
/**
* 将json解析为指定的类型(内部使用)
*
* @param json 要进行解析的json数据
* @param javaType 要解析成的类型对象
* @return 解析后的指定类型
* @author :loulan
*/
public static T parse(byte[] json, JavaType javaType) {
try {
return objectMapper.readValue(json, javaType);
} catch (Exception ex) {
throw new JsonException("json解析异常", ex);
}
}
/**
* 获取类型工厂{@link TypeFactory},通过类型工厂可以更好的生成JavaType
*
* @return 类型工厂
* @author :loulan
*/
public static TypeFactory getTypeFactory() {
return objectMapper.getTypeFactory();
}
}