Class JsonUtil

java.lang.Object
cn.sinozg.applet.common.utils.JsonUtil

public class JsonUtil extends Object
json 工具类
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected static final org.slf4j.Logger
     
    protected static final com.fasterxml.jackson.databind.json.JsonMapper
     
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static com.fasterxml.jackson.databind.JavaType
    getCollectionType(Class<?> collectionClass, Class<?>... elementClasses)
    获取泛型的 Collection Type
    static boolean
    isJson(String json)
    判断是否为json 只是初级判断,没有严格校验json的内容
    static com.fasterxml.jackson.databind.JsonNode
    获取到json节点的值 可以多层获取
    static String
    key2Val(String json, String key)
    获取json节点的值
    static String
    获取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.json.JsonMapper
    om()
    获取对象
    static String
    美化json
    static String
    转换为 JSON 字符串
    static Map<String,Object>
    toMap(String json)
    json 字符串转为map
    static <T> Map<String,T>
    toMap(String json, Class<T> clazz)
    json 字符串转为map value的类型一样
    static <T extends Serializable>
    com.fasterxml.jackson.databind.JsonNode
    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.json.JsonMapper,com.fasterxml.jackson.databind.JavaType> function)
    反序列化 嵌套泛型带参数的 示例:
    static <T> List<T>
    toPojos(String json, Class<T> clazz)
    转换为 JavaBean 集合
    static <T> T
    tryParse(FunctionException<com.fasterxml.jackson.databind.json.JsonMapper,T> parse)
    解析json
    protected static <T> T
    tryParse(FunctionException<com.fasterxml.jackson.databind.json.JsonMapper,T> parse, com.fasterxml.jackson.databind.json.JsonMapper om)
    解析json

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • OM

      protected static final com.fasterxml.jackson.databind.json.JsonMapper OM
    • log

      protected static final org.slf4j.Logger log
  • Constructor Details

    • JsonUtil

      public JsonUtil()
  • Method Details

    • printerJson

      public static String printerJson(Object obj)
      美化json
      Parameters:
      obj - 对象
      Returns:
      美化后的json
    • toJson

      public static String toJson(Object obj)
      转换为 JSON 字符串
      Parameters:
      obj - 对象
      Returns:
      json
    • toMap

      public static Map<String,Object> toMap(String json)
      json 字符串转为map
      Parameters:
      json - json
      Returns:
      map
    • toMap

      public static <T> Map<String,T> toMap(String json, Class<T> clazz)
      json 字符串转为map value的类型一样
      Parameters:
      json - json
      clazz - value 类型
      Returns:
      map
    • mapPojo

      public static <T> T mapPojo(Map<String,Object> map, Class<T> clazz)
      map转为 bean
      Type Parameters:
      T - 类型
      Parameters:
      map - map
      clazz - 类型
      Returns:
      bean
    • toPojo

      public static <T> T toPojo(String json, Class<T> clazz)
      转换为 JavaBean
      Parameters:
      json - json
      clazz - 类型
      Returns:
      实体对象
    • toPojo

      public static <T> T toPojo(String json, Function<com.fasterxml.jackson.databind.json.JsonMapper,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<JsonMapper, 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);
       
      Type Parameters:
      T - 实体
      Parameters:
      json - json
      function - 获取泛型的函数
      Returns:
      结果
    • toPojos

      public static <T> List<T> toPojos(String json, Class<T> clazz)
      转换为 JavaBean 集合
      Parameters:
      json - json
      clazz - 类型
      Returns:
      对象集合
    • nodeBean

      public static <T> T nodeBean(com.fasterxml.jackson.databind.JsonNode node, Class<T> clazz)
      JsonNode 转bean
      Type Parameters:
      T - 实体对象类型
      Parameters:
      node - node
      clazz - 类型
      Returns:
      实体
    • getCollectionType

      public static com.fasterxml.jackson.databind.JavaType getCollectionType(Class<?> collectionClass, Class<?>... elementClasses)
      获取泛型的 Collection Type
      Parameters:
      collectionClass - 泛型的Collection
      elementClasses - 元素类
      Returns:
      JavaType Java类型
    • key2Val

      public static String key2Val(String json, String key)
      获取json节点的值
      Parameters:
      json - json
      key - 值
      Returns:
      对应的值
    • key2Val

      public static String key2Val(String json, List<JsonNodeInfo> infos)
      获取json节点的值 可以多层获取 最后节点是最后节点才可以
      Parameters:
      json - json
      infos - 每层的信息
      Returns:
    • key2Node

      public static com.fasterxml.jackson.databind.JsonNode key2Node(String json, List<JsonNodeInfo> infos)
      获取到json节点的值 可以多层获取
      Parameters:
      json - json
      infos - 每层的信息
      Returns:
      节点
    • nodeValue

      private static com.fasterxml.jackson.databind.JsonNode nodeValue(com.fasterxml.jackson.databind.JsonNode node, JsonNodeInfo info)
      获取节点信息
      Parameters:
      node - 节点
      info - 具体信息
      Returns:
      node
    • om

      public static com.fasterxml.jackson.databind.json.JsonMapper om()
      获取对象
      Returns:
      对象
    • toNode

      public static <T extends Serializable> com.fasterxml.jackson.databind.JsonNode toNode(T t)
      对象转 JsonNode
      Type Parameters:
      T - 类型
      Parameters:
      t - 入参
      Returns:
      node节点
    • tryParse

      public static <T> T tryParse(FunctionException<com.fasterxml.jackson.databind.json.JsonMapper,T> parse)
      解析json
      Type Parameters:
      T - 返回类型
      Parameters:
      parse - 执行函数
      Returns:
      返回数据
    • isJson

      public static boolean isJson(String json)
      判断是否为json 只是初级判断,没有严格校验json的内容
      Parameters:
      json - json字符串
      Returns:
      是否为json
    • tryParse

      protected static <T> T tryParse(FunctionException<com.fasterxml.jackson.databind.json.JsonMapper,T> parse, com.fasterxml.jackson.databind.json.JsonMapper om)
      解析json
      Type Parameters:
      T - 返回类型
      Parameters:
      parse - 执行函数
      om - om
      Returns:
      返回数据