All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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(); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy