com.supermap.services.rest.util

类 JsonConverter

  • java.lang.Object
    • com.supermap.services.rest.util.JsonConverter


  • public class JsonConverter
    extends java.lang.Object
    

    JSON 转换器。

    可以将 JSON 字符串转换为 Java 对象, 将一个普通Java 对象转换成一个 JSONObject 对象, 如果传入对象是基本类型,则不转换。

    示例代码:

     JsonConverter jsonC = new JsonConverter();
     Status status = Status.CLIENT_ERROR_BAD_REQUEST;
     Object obj = jsonC.toFormatedObject(status);
     
    
    • 嵌套类概要

      嵌套类 
      限定符和类型 类和说明
      static class  JsonConverter.FieldInfo
      字段类型类。
    • 构造器概要

      构造器 
      构造器和说明
      JsonConverter()
      构造函数。
    • 方法概要

      方法 
      限定符和类型 方法和说明
      static void addDecoderResolver(JsonDecoderResolver resolver)
      添加反序列化器解决者。
      static void addEncoderResolver(JsonEncoderResolver resolver)
      添加序列化器解决者。
      void addTypeRestrict(java.lang.Class<?> type, java.lang.String fieldName, JsonConverter.FieldInfo restrict)
      添加类型限定 ,用于指出某个类型的某个字段的描述。
      <T> T commonObjectDecoder(java.lang.String jsonStr, java.lang.Class<T> targetClass, DecoderSetting decoderSetting)
      普通对象的转换,要求待解码的对象中没有类型为List ,Map ,Set 的属性。
      <T> T commonObjectDecoder(java.lang.String jsonStr, java.lang.Class<T> targetClass, java.util.Set<java.lang.String> notDecoderedFieldSet, DecoderSetting decoderSetting)
      普通对象的转换,要求待解码的对象中没有类型为List ,Map ,Set 的属性。
      static java.lang.Object getEncapsulation(java.lang.String str, java.lang.Class cl)
      根据序列化的字符串,对待封装类进行封装。
      static boolean isCustomEnum(java.lang.Object obj)
      判断obj 的类型是否是自定义的枚举,如果一个类型他的一个字段的类型与就是本身的类型,并且该字段是static ,final 的,则不序列化
      static boolean isEncapsulation(java.lang.Class cl)
      判断是否是封装类。
      static <T> T parseJson(java.lang.String json, java.lang.Class<T> clz) 
      static <T> java.util.List<T> parseJsonToList(java.lang.String json, java.lang.Class<T> elementClz) 
      protected java.lang.String specialCharConverter(java.lang.String copyJsonStr)
      特殊字符转义
      <T> T to(java.lang.String jsonStr, java.lang.Class<T> targetClass)
      将一个 JSON 字符串转换成目标类型。
      java.lang.Object toArray(JSONArray jsonArray, java.lang.Class arrayElementType)
      将一个 JSON 类型数组转换成一个 Java 数组。
      java.lang.Object toFormatedObject(java.lang.Object resourceObj)
      将一个 Java 对象转换成一个 JSONObject 对象。
      static java.lang.String toJson(java.lang.Object o) 
      <T> java.util.List<T> toList(java.lang.String jsonStr, java.lang.Class<T> elementClass)
      将一个 JSON 字符串转换成List类型。
      java.util.Map<java.lang.String,java.lang.Object> toMap(java.lang.String jsonStr, java.util.Map<java.lang.String,java.lang.Class> nameClassMapping)
      将一个 JSON 字符串转换成Map类型。
      <T> T toObject(java.lang.String jsonStr, java.lang.Class<T> targetClass)
      将一个 JSON 字符串转换成Object类型。
      java.lang.Object toObject(java.lang.String jsonStr, java.lang.Class targetClass, DecoderSetting decoderSetting) 
      <T> java.util.Set<T> toSet(java.lang.String jsonStr, java.lang.Class<T> elementClass)
      将一个 JSON 字符串转换成Set类型。
      • 从类继承的方法 java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • 构造器详细资料

      • JsonConverter

        public JsonConverter()
        

        构造函数。

    • 方法详细资料

      • getEncapsulation

        public static java.lang.Object getEncapsulation(java.lang.String str,
                                        java.lang.Class cl)
        

        根据序列化的字符串,对待封装类进行封装。

        参数:
        str - 已经序列化的字符串。
        cl - 待封装的类。
        返回:
        返回封装后的类。
      • isEncapsulation

        public static boolean isEncapsulation(java.lang.Class cl)
        
        判断是否是封装类。
        参数:
        cl - 待判断的类。
        返回:
        返回是否需要封装类,true则需要,false则不需要。
      • toJson

        public static java.lang.String toJson(java.lang.Object o)
        
      • parseJson

        public static <T> T parseJson(java.lang.String json,
                      java.lang.Class<T> clz)
                           throws JSONException
        
        抛出:
        JSONException
      • parseJsonToList

        public static <T> java.util.List<T> parseJsonToList(java.lang.String json,
                                            java.lang.Class<T> elementClz)
                                                 throws JSONException
        
        抛出:
        JSONException
      • addEncoderResolver

        public static void addEncoderResolver(JsonEncoderResolver resolver)
        

        添加序列化器解决者。

        参数:
        resolver - 解决者
      • addDecoderResolver

        public static void addDecoderResolver(JsonDecoderResolver resolver)
        

        添加反序列化器解决者。

        参数:
        resolver - 解决者
      • isCustomEnum

        public static boolean isCustomEnum(java.lang.Object obj)
        
        判断obj 的类型是否是自定义的枚举,如果一个类型他的一个字段的类型与就是本身的类型,并且该字段是static ,final 的,则不序列化
      • toFormatedObject

        public java.lang.Object toFormatedObject(java.lang.Object resourceObj)
        

        将一个 Java 对象转换成一个 JSONObject 对象。

        参数:
        resourceObj - 欲转换的 Java 对象。
        返回:
        JSONObject 对象。
      • to

        public <T> T to(java.lang.String jsonStr,
               java.lang.Class<T> targetClass)
             throws JSONException
        

        将一个 JSON 字符串转换成目标类型。

        参数:
        jsonStr - JSON 字符
        targetClass - 目标类。
        返回:
        返回转换后的目标类。
        抛出:
        JSONException - 抛出JSON异常。
      • toObject

        public <T> T toObject(java.lang.String jsonStr,
                     java.lang.Class<T> targetClass)
                   throws JSONException
        

        将一个 JSON 字符串转换成Object类型。

        参数:
        jsonStr - JSON 字符串。
        targetClass - 目标类。
        返回:
        返回转换后的Object类型对象。
        抛出:
        JSONException - 抛出JSON异常。
      • toList

        public <T> java.util.List<T> toList(java.lang.String jsonStr,
                                   java.lang.Class<T> elementClass)
                                 throws JSONException
        

        将一个 JSON 字符串转换成List类型。

        参数:
        jsonStr - JSON 字符串。
        elementClass - 目标类的元素类型。
        返回:
        返回转换后List类型的对象。
        抛出:
        JSONException - 抛出JSON异常。
      • toSet

        public <T> java.util.Set<T> toSet(java.lang.String jsonStr,
                                 java.lang.Class<T> elementClass)
                               throws java.lang.IllegalArgumentException,
                                      JSONException
        

        将一个 JSON 字符串转换成Set类型。

        参数:
        jsonStr - JSON 字符串。
        elementClass - 目标类的元素类型。
        返回:
        返回转换后Set类型的对象。
        抛出:
        java.lang.IllegalArgumentException - 当出现以下情况时,抛出IllegalArgumentException异常: 1.JSON 字符串为空; 2.elementClass 为空。
        JSONException - 抛出JSON异常。
      • toMap

        public java.util.Map<java.lang.String,java.lang.Object> toMap(java.lang.String jsonStr,
                                                             java.util.Map<java.lang.String,java.lang.Class> nameClassMapping)
        

        将一个 JSON 字符串转换成Map类型。

        参数:
        jsonStr - JSON 字符。
        nameClassMapping - java.util.Map 映射集。其中键为字段名,值为字段的类型。
        返回:
        java.util.Map 参数映射集。其中键为字段名,值为对应的 Java 对象。
      • toArray

        public java.lang.Object toArray(JSONArray jsonArray,
                               java.lang.Class arrayElementType)
                                 throws JSONException
        

        将一个 JSON 类型数组转换成一个 Java 数组。

        参数:
        jsonArray - 欲转换的 JSON 类型数组。
        arrayElementType - 数组元素的类型。
        返回:
        Java 对象数组。
        抛出:
        JSONException - JSON 异常。
      • commonObjectDecoder

        public <T> T commonObjectDecoder(java.lang.String jsonStr,
                                java.lang.Class<T> targetClass,
                                DecoderSetting decoderSetting)
                              throws JSONException
        
        普通对象的转换,要求待解码的对象中没有类型为List ,Map ,Set 的属性。
        抛出:
        JSONException
      • commonObjectDecoder

        public <T> T commonObjectDecoder(java.lang.String jsonStr,
                                java.lang.Class<T> targetClass,
                                java.util.Set<java.lang.String> notDecoderedFieldSet,
                                DecoderSetting decoderSetting)
                              throws JSONException
        
        普通对象的转换,要求待解码的对象中没有类型为List ,Map ,Set 的属性。
        抛出:
        JSONException
      • addTypeRestrict

        public void addTypeRestrict(java.lang.Class<?> type,
                           java.lang.String fieldName,
                           JsonConverter.FieldInfo restrict)
        

        添加类型限定 ,用于指出某个类型的某个字段的描述。

        该接口主要是用于解决反序列化List,Set ,Map 等类型时,反序列化类不知道集合元素类型的问题。

        参数:
        type - 类型。
        fieldName - 字段名。
        restrict - 添加的限制。
      • toObject

        public java.lang.Object toObject(java.lang.String jsonStr,
                                java.lang.Class targetClass,
                                DecoderSetting decoderSetting)
                                  throws JSONException
        
        抛出:
        JSONException
      • specialCharConverter

        protected java.lang.String specialCharConverter(java.lang.String copyJsonStr)
        
        特殊字符转义
        参数:
        copyJsonStr -
        返回: