com.supermap.services.rest.decoders

类 JsonDecoder

  • 所有已实现的接口:
    javax.ws.rs.ext.MessageBodyReader<java.lang.Object>
    直接已知子类:
    FlexRequestEntityDecoder


    @Provider
    public class JsonDecoder
    extends Decoder
    implements javax.ws.rs.ext.MessageBodyReader<java.lang.Object>
    

    JSON 类型解码器。

    • 构造器概要

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

      方法 
      限定符和类型 方法和说明
      void addResolvers(java.util.List<JsonDecoderResolver> resolvers)
      设置反序列化的解决者。
      void addTypeRestrict(java.lang.Class type, java.lang.String fieldName, JsonConverter.FieldInfo restrict)
      添加类型限定 ,用于指出某个类型的某个字段的描述 该接口主要是用于解决反序列化List,Set ,Map 等类型时,反序列化类不知道集合元素类型的问题。
      protected java.util.List<MediaType> createSupportedMediaTypes()
      创建支持的 MIME 类型列表。
      boolean isReadable(java.lang.Class<?> arg0, java.lang.reflect.Type arg1, java.lang.annotation.Annotation[] arg2, javax.ws.rs.core.MediaType arg3)
      判断请求体能否反序列化为Java对象。
      java.lang.Object readFrom(java.lang.Class<java.lang.Object> type, java.lang.reflect.Type genericType, java.lang.annotation.Annotation[] annotations, javax.ws.rs.core.MediaType mediaType, javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> httpHeaders, java.io.InputStream entityStream)
      将请求体反序列化为Java对象。
      java.lang.Object toArray(JSONArray jsonArray, java.lang.Class arrayElementType)
      将一个 JSON 类型数组转换成一个 Java 数组。
      <T> java.util.List<T> toList(java.lang.String text, java.lang.Class<T> elementClass)
      将一个字符串转化为一个列表对象。
      java.util.Map<java.lang.String,java.lang.Object> toMap(java.lang.String str, java.util.Map<java.lang.String,java.lang.Class> nameClassMapping)
      将 JSON 对象转换成一个映射集。
      <T> T toObject(java.lang.String jsonStr, java.lang.Class<T> targetClass)
      用于将一个 jsonStr 字符串转换成普通 Java 对象。jsonStr 可以是一个 JSON 对象的文本,也可以是一个 JSON 数组的文本。
      java.util.Set toSet(java.lang.String text, java.lang.Class elementClass)
      将一个字符串转化为一个 Set 对象。
      • 从类继承的方法 java.lang.Object

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

      • JsonDecoder

        public JsonDecoder()
        

        构造函数。

    • 方法详细资料

      • toObject

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

        用于将一个 jsonStr 字符串转换成普通 Java 对象。jsonStr 可以是一个 JSON 对象的文本,也可以是一个 JSON 数组的文本。

        有如下情况时,会发生错误,抛出异常:

        1,jsonStr 不是一个 JSON 字符串。

        2,jsonStr 中没有包含必须的字段。例如,如果 jsonStr 表示一个图层,则必须有 LayerType 字段,如果表示的图层是一个 UGCLayer,则必须有 ugcLayerType 字段;当 jsonStr 表示一个专题图,则必须有 ThemeType 字段。

        指定者:
        toObject 在类中 Decoder
        参数:
        jsonStr - 欲转换的 JSON 字符串。
        targetClass - 目标类,即要将 JSON 字符串转换成什么类型的对象。
        返回:
        转换后的对象。
        抛出:
        java.lang.IllegalArgumentException
        JSONException
      • toMap

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

        将 JSON 对象转换成一个映射集。

        指定者:
        toMap 在类中 Decoder
        参数:
        str - 欲转换的 JSON 字符串,
        nameClassMapping - java.util.Map 映射集。其中键为字段名,值为字段的类型。
        返回:
        映射集。
      • toList

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

        将一个字符串转化为一个列表对象。

        指定者:
        toList 在类中 Decoder
        参数:
        text - 欲转换的字符串。
        elementClass - 列表元素所属的类。
        返回:
        List 对象。
        抛出:
        JSONException - 当参数(text 或 elementClass)为 null 时抛出异常。
      • toSet

        public java.util.Set toSet(java.lang.String text,
                          java.lang.Class elementClass)
                            throws JSONException
        

        将一个字符串转化为一个 Set 对象。

        指定者:
        toSet 在类中 Decoder
        参数:
        text - 欲转换的字符串。
        elementClass - Set 中元素所属的类。
        返回:
        Set 对象。
        抛出:
        JSONException - 当参数(text 或 elementClass)为 null 时抛出异常。
      • createSupportedMediaTypes

        protected java.util.List<MediaType> createSupportedMediaTypes()
        

        创建支持的 MIME 类型列表。

        指定者:
        createSupportedMediaTypes 在类中 Decoder
        返回:
        支持的 MIME 类型序列。
      • toArray

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

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

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

        public void addResolvers(java.util.List<JsonDecoderResolver> resolvers)
        
        设置反序列化的解决者。
        参数:
        resolvers -
      • addTypeRestrict

        public void addTypeRestrict(java.lang.Class type,
                           java.lang.String fieldName,
                           JsonConverter.FieldInfo restrict)
        
        添加类型限定 ,用于指出某个类型的某个字段的描述 该接口主要是用于解决反序列化List,Set ,Map 等类型时,反序列化类不知道集合元素类型的问题。
      • isReadable

        public boolean isReadable(java.lang.Class<?> arg0,
                         java.lang.reflect.Type arg1,
                         java.lang.annotation.Annotation[] arg2,
                         javax.ws.rs.core.MediaType arg3)
        

        判断请求体能否反序列化为Java对象。

        指定者:
        isReadable 在接口中 javax.ws.rs.ext.MessageBodyReader<java.lang.Object>
        参数:
        arg0 - 反序列化的Java对象的类(class)。
        arg1 - 反序列化的Java对象的类型(type)。
        arg2 - 注记。
        arg3 - 媒体类型。
        返回:
        可以进行序列化。
      • readFrom

        public java.lang.Object readFrom(java.lang.Class<java.lang.Object> type,
                                java.lang.reflect.Type genericType,
                                java.lang.annotation.Annotation[] annotations,
                                javax.ws.rs.core.MediaType mediaType,
                                javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> httpHeaders,
                                java.io.InputStream entityStream)
                                  throws java.io.IOException,
                                         javax.ws.rs.WebApplicationException
        

        将请求体反序列化为Java对象。

        指定者:
        readFrom 在接口中 javax.ws.rs.ext.MessageBodyReader<java.lang.Object>
        参数:
        type - 反序列化的Java对象的类(class)。
        genericType - 反序列化的Java对象的类型(type)。
        annotations - 注记。
        mediaType - 媒体类型。
        httpHeaders - 请求体表单。
        entityStream - 请求体字节流。
        返回:
        Java对象。
        抛出:
        java.io.IOException - IO异常。
        javax.ws.rs.WebApplicationException - Web应用异常。