Class JsonUtil

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

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

    • OM

      protected static final com.fasterxml.jackson.databind.ObjectMapper 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.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);
       
      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.ObjectMapper 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.ObjectMapper,T> parse)
      解析json
      Type Parameters:
      T - 返回类型
      Parameters:
      parse - 执行函数
      Returns:
      返回数据
    • tryParse

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