json处理(jackson)

  1. ObjectMapper
  • 配置方法(链式调用)
方法描述
registerModule(Module module)注册模块
registerModules(Module… modules)注册多个模块
findAndRegisterModules()查找并注册模块
setSerializerFactory(SerializerFactory f)设置序列化工厂
setSerializerProvider(DefaultSerializerProvider p)设置序列化提供者
setMixIns(Map<Class<?>, Class<?>> mixins)设置混合类型
addMixIn(Class<?> target, Class<?> mixinSource)添加混合类型
setMixInResolver(MixInResolver resolver)设置混合解析器
setVisibility(VisibilityChecker<?> vc)设置可见性
setSubtypeResolver(SubtypeResolver str)设置子类型解析器
setAnnotationIntrospector(AnnotationIntrospector ai)设置公共注释内省者
setAnnotationIntrospectors(AnnotationIntrospector s,
AnnotationIntrospector d)
设置序列化与反序列化注释内省者
setPropertyNamingStrategy(PropertyNamingStrategy s)设置属性命名策略
setDefaultPrettyPrinter(PrettyPrinter pp)设置输出格式
setSerializationInclusion(Include incl)设置序列化包含字段
setDefaultPropertyInclusion(Value incl)设置默认字段包含字段
setDefaultSetterInfo(Value v)设置默认设置信息
setDefaultVisibility(Value vis)设置默认可见性
setDefaultMergeable(Boolean b)设置默认可合并
enableDefaultTyping(ObjectMapper.DefaultTyping a,
As includeAs)
启用默认类型
enableDefaultTypingAsProperty(ObjectMapper.DefaultTyping a,
String propertyName)
启用字段默认类型
disableDefaultTyping()禁用默认类型
setDefaultTyping(TypeResolverBuilder<?> typer)设置默认类型
setTypeFactory(TypeFactory f)设置类型工厂
setNodeFactory(JsonNodeFactory f)设置节点工厂
addHandler(DeserializationProblemHandler h)添加处理器
clearProblemHandlers()清除处理器
setConfig(DeserializationConfig config)设置配置
setFilterProvider(FilterProvider filterProvider)设置过滤提供者
setBase64Variant(Base64Variant v)设置Base64变体
setDateFormat(DateFormat dateFormat)设置日期格式
setHandlerInstantiator(HandlerInstantiator hi)设置处理程序实例化器
setInjectableValues(InjectableValues injectableValues)设置可注射值
setLocale(Locale l)设置语言环境
setTimeZone(TimeZone tz)设置时区
configure(MapperFeature f, boolean state)设置配置
enable(MapperFeature… f)启用配置
disable(MapperFeature… f)禁用配置
  • 操作方法
方法描述
copy()复制有个对象
version()获取版本信息
getSerializationConfig()获取序列化配置
getDeserializationConfig()获取反序列化配置
getDeserializationContext()获取反序列化上下文
mixInCount()获取混合类型数量
getSerializerProviderInstance()获取序列化提供者实例
getVisibilityChecker()获取可见性检查器
findMixInClassFor(Class<?> cls)查找混合类型类
getSubtypeResolver()获取子类型解析器
registerSubtypes(Class<?>… classes)注册子类型
configOverride(Class<?> type)配置覆盖
getTypeFactory()获取类型工厂
constructType(Type t)获取构造类型
getNodeFactory()获取节点工厂
getFactory()获取工厂
getDateFormat()获取日期类型
getInjectableValues()获取可注射值
isEnabled(MapperFeature f)判断配置是否启用
readValue(String content, Class valueType)读取json;
可读取以下类型:
json字符串(String),
字符流(Reader),
字节流(InputStream),
json解析器(JsonParser),
字节数组(byte[])
文件(File),
地址(URL),
数据(DataInput)
可设置返回的类型:
Class,
TypeReference,
ResolvedType
readValues(JsonParser p, Class valueType)读取多值,获得映射迭代器
readTree(String content)读取树,读取类型同readValue
writeValue(JsonGenerator g, Object value)写出值,可写入以下参数:
JsonGenerator,File,OutputStream
DataOutput,Writer
writeTree(JsonGenerator jgen, TreeNode root)写出树
createObjectNode()创建一个节点对象
createArrayNode()创建一个节点数组
treeAsTokens(TreeNode n)树作为令牌
treeToValue(TreeNode n, Class valueType)树转值
valueToTree(Object fromValue)值转树
canSerialize(Class<?> type)判断是否可序列化
canDeserialize(JavaType type)判断是否可反序列化
writeValueAsString(Object value)写入值到字符串
writeValueAsBytes(Object value)写入值到字符数组
writer()获取写入对象
writerWithView(Class<?> serializationView)获取带视图写入对象
writerFor(Class<?> rootType)获取写入对象
writerWithDefaultPrettyPrinter()json字符串格式化
reader()获取读取对象
readerForUpdating(Object valueToUpdate)获取用于更新的读取对象
readerFor(JavaType type)获取读取对象
readerWithView(Class<?> view)获取带视图读取对象
convertValue(Object fromValue, Class type)转换值
updateValue(T valueToUpdate, Object overrides)更新值
acceptJsonFormatVisitor(Class<?> type,
JsonFormatVisitorWrapper visitor)
接受Json格式访问者
  • 静态方法
方法描述
findModules(ClassLoader classLoader)获取的模块
  1. 常量

    • SerializationFeature

      通过ObjectMapper对象configure/enable/disable方法设置

      常量描述
      WRAP_ROOT_VALUE是否以类名为根节点,默认false
      INDENT_OUTPUT是否缩放排列输出,默认false
      FAIL_ON_EMPTY_BEANS空失败
      FAIL_ON_SELF_REFERENCES自引用失败
      WRAP_EXCEPTIONS包装异常
      FAIL_ON_UNWRAPPED_TYPE_IDENTIFIERS未包装的类型标识符失败
      CLOSE_CLOSEABLE关闭
      FLUSH_AFTER_WRITE_VALUE写入值后刷新
      WRITE_DATES_AS_TIMESTAMPS序列化Date日期时以时间戳输出,默认true;为false时以 2020-09-16T01:07:23.275+0000 格式输出
      WRITE_DATE_KEYS_AS_TIMESTAMPS将日期键写入时间戳
      WRITE_DATES_WITH_ZONE_ID将区域id写入日期
      WRITE_DURATIONS_AS_TIMESTAMPS将持续时间写成时间戳
      WRITE_CHAR_ARRAYS_AS_JSON_ARRAYS序列化char[]时以json数组输出,默认false
      WRITE_ENUMS_USING_TO_STRING序列化枚举是否以toString()来输出,
      默认false,即默认以name()来输出
      WRITE_ENUMS_USING_INDEX序列化枚举是否以ordinal()来输出,默认false
      WRITE_SINGLE_ELEM_ARRAYS_UNWRAPPED开启,默认false
      WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS将日期时间戳记写入毫微秒
      ORDER_MAP_ENTRIES_BY_KEYS序列化Map时对key进行排序操作,默认false
      EAGER_SERIALIZER_FETCH急序列化器获取
      USE_EQUALITY_FOR_OBJECT_ID对对象ID使用平等
    • DeserializationFeature

      通过ObjectMapper对象configure/enable/disable方法设置

      常量描述
      USE_BIG_DECIMAL_FOR_FLOATS浮点类型使用BigDecimal,默认false
      USE_BIG_INTEGER_FOR_INTSint类型使用BigInteger,默认false
      USE_LONG_FOR_INTSint类型使用long,默认false
      USE_JAVA_ARRAY_FOR_JSON_ARRAYjson序列使用java序列,默认false
      FAIL_ON_UNKNOWN_PROPERTIES为false忽略未知属性失败,默认为true
      FAIL_ON_NULL_FOR_PRIMITIVES主键为空失败
      FAIL_ON_NUMBERS_FOR_ENUMS数字枚举失败
      FAIL_ON_INVALID_SUBTYPE无效的子类型失败
      FAIL_ON_READING_DUP_TREE_KEY读取双树树密钥失败
      FAIL_ON_IGNORED_PROPERTIES被忽略的属性失败
      FAIL_ON_UNRESOLVED_OBJECT_IDS未能解决的对象ID失败
      FAIL_ON_MISSING_CREATOR_PROPERTIES缺少创作者属性失败
      FAIL_ON_NULL_CREATOR_PROPERTIES空创建者属性失败
      FAIL_ON_MISSING_EXTERNAL_TYPE_ID_PROPERTY缺少外部类型ID属性失败
      FAIL_ON_TRAILING_TOKENS交易令牌失败
      WRAP_EXCEPTIONS报错异常
      ACCEPT_SINGLE_VALUE_AS_ARRAY单值可转换为集合数组,默认false
      UNWRAP_SINGLE_VALUE_ARRAYS取消单值数组,默认false
      UNWRAP_ROOT_VALUE解析根节点为类名的json,默认false
      ACCEPT_EMPTY_STRING_AS_NULL_OBJECT接受空字符串作为空对象,默认false
      ACCEPT_EMPTY_ARRAY_AS_NULL_OBJECT接受空数组作为空对象,默认false
      ACCEPT_FLOAT_AS_INT接受float类型为int,默认true
      READ_ENUMS_USING_TO_STRING使用字符串读取枚举,默认false
      READ_UNKNOWN_ENUM_VALUES_AS_NULL将未知的枚举值读取为NULL,默认false
      READ_UNKNOWN_ENUM_VALUES_USING_DEFAULT_VALUE使用默认值读取未知的枚举值,默认false
      READ_DATE_TIMESTAMPS_AS_NANOSECONDS读取日期时间戳记,默认true
      ADJUST_DATES_TO_CONTEXT_TIME_ZONE调整日期到时区,默认true
      EAGER_DESERIALIZER_FETCHEAGER反序列化器
    • JsonInclude.Include

      通过@JsonInclude的value属性设置

      常量描述
      ALWAYS默认,序列化所有属性
      NON_NULL属性为NULL 不序列化
      NON_ABSENT同 NON_NULL
      NON_EMPTY属性为 空字符串或 NULL 都不序列化
      NON_DEFAULT属性为默认值不序列化
      CUSTOM定制
      USE_DEFAULTS序列化默认值
    • JsonParser.Feature

      通过ObjectMapper对象enable/disable方法

      常量描述
      AUTO_CLOSE_SOURCE解析json自动关闭输入源,默认true
      ALLOW_COMMENTS解析json许解析使用Java/C++ 样式的注释,默认false
      ALLOW_YAML_COMMENTS解析json许解析使用YAML 样式的注释,默认false
      ALLOW_UNQUOTED_FIELD_NAMES解析json允许使用非双引号属性名字,默认false
      ALLOW_SINGLE_QUOTES解析json允许单引号来包住属性名称和字符串值,默认false
      STRICT_DUPLICATE_DETECTION解析json严格重复校验,有重复字段抛异常,默认false
      IGNORE_UNDEFINED忽略未定义
      INCLUDE_SOURCE_IN_LOCATION在位置包含来源
    • JsonParser.NumberType

      常量描述
      INTint类型
      LONGlong类型
      BIG_INTEGERBigInteger类型
      FLOATfloat类型
      DOUBLEDouble类型
      BIG_DECIMALBigDecimal类型
    • JsonGenerator.Feature

      通过ObjectMapper对象configure/enable/disable方法设置

      常量描述
      AUTO_CLOSE_TARGET自动关闭目标
      AUTO_CLOSE_JSON_CONTENT自动关闭JSON内容
      FLUSH_PASSED_TO_STREAM刷新流
      WRITE_BIGDECIMAL_AS_PLAINbigdecimal类型写入
      STRICT_DUPLICATE_DETECTION严格重复校验
      IGNORE_UNKNOWN忽略未定义
    • MapperFeature
      通过ObjectMapper对象configure/enable/disable方法设置

      常量描述
      USE_ANNOTATIONS使用注解,默认true
      USE_GETTERS_AS_SETTERS使用get与set方法,默认true
      PROPAGATE_TRANSIENT_MARKER忽略 transient 修饰的属性,默认false
      AUTO_DETECT_CREATORS自动检测创建者
      AUTO_DETECT_FIELDS自动检测字段
      AUTO_DETECT_GETTERS自动检测getter方法
      AUTO_DETECT_IS_GETTERS自动检测是否是getter方法
      AUTO_DETECT_SETTERS自动检测setter方法
      REQUIRE_SETTERS_FOR_GETTERS需要使用get与set方法,默认false
      ALLOW_FINAL_FIELDS_AS_MUTATORS允许final修饰字段可修改,默认true
      INFER_PROPERTY_MUTATORS推断字段可修改,默认true
      INFER_CREATOR_FROM_CONSTRUCTOR_PROPERTIES从构造函数属性推断创建者,默认true
      CAN_OVERRIDE_ACCESS_MODIFIERS可以覆盖访问修饰符,默认true
      OVERRIDE_PUBLIC_ACCESS_MODIFIERS覆盖公共访问修饰符,默认true
      USE_STATIC_TYPING使用静态类型,默认false
      DEFAULT_VIEW_INCLUSION默认包含视图,默认true
      SORT_PROPERTIES_ALPHABETICALLY按字母排序,默认false
      ACCEPT_CASE_INSENSITIVE_PROPERTIES接受字段命名不敏感,默认false
      ACCEPT_CASE_INSENSITIVE_ENUMS接受枚举命名不敏感,默认false
      USE_WRAPPER_NAME_AS_PROPERTY_NAME使用包装器名称作为属性名称,默认false
      USE_STD_BEAN_NAMING使用标准Bean命名法,默认false
      ALLOW_EXPLICIT_PROPERTY_RENAMING允许显式属性重命名,默认false
      ALLOW_COERCION_OF_SCALARS允许强制标量,默认true
      IGNORE_DUPLICATE_MODULE_REGISTRATIONS忽略重复的模块注册,默认true
      IGNORE_MERGE_FOR_UNMERGEABLE忽略合并为不可合并,默认true
    • JsonFactory.Feature

      常量描述
      INTERN_FIELD_NAMES内部字段名,默认true
      CANONICALIZE_FIELD_NAMES规范字段名,默认true
      FAIL_ON_SYMBOL_HASH_OVERFLOW哈希溢出失败,默认true
      USE_THREAD_LOCAL_FOR_BUFFER_RECYCLING使用本地线程进行缓冲区回收,默认true
    • PropertyNamingStrategy

      通过ObjectMapper对象setPropertyNamingStrategy方法设置

      常量描述
      SNAKE_CASE蛇形命名法,例如:abc_def
      UPPER_CAMEL_CASE大驼峰命名法,例如:AbcDef
      LOWER_CAMEL_CASE小驼峰命名法,例如:abcDef
      LOWER_CASE全小写命名法,例如:abcdef
      KEBAB_CASELisp风格命名法,例如:abc-def
    • JsonAutoDetect.Visibility

      在@JsonAutoDetect中配置

      常量描述
      ANY自动发现所有修饰符的属性
      NON_PRIVATE自动发现除被private修饰以外的属性;当字段及get/set方法被private修饰时,则该字段不被自动发现
      PROTECTED_AND_PUBLIC自动发现protected与public修饰的属性
      PUBLIC_ONLY仅自动被public修饰的属性
      NONE指禁止发现所有的属性,但是对getter/setter方法无效
      DEFAULT默认,同PUBLIC_ONLY
    • JsonProperty.Access (字段权限常量)

      在@JsonProperty的属性access配置

      常量描述
      AUTO自动
      READ_ONLY只读
      WRITE_ONLY只写
      READ_WRITE可读写
    • JsonSerialize.Typing

      常量描述
      DYNAMIC动态
      STATIC静态
      DEFAULT_TYPING默认
    • JsonTypeInfo.Id

      常量描述
      NONE不使用识别码
      CLASS使用完全限定类名做识别
      MINIMAL_CLASS若基类和子类在同一包类,使用类名(忽略包名)作为识别码
      NAME一个合乎逻辑的指定名称
      CUSTOM自定义识别码,由@JsonTypeIdResolver对应
    • JsonTypeInfo.As

      常量描述
      PROPERTY作为数据的兄弟属性
      WRAPPER_OBJECT作为一个包装的对象
      WRAPPER_ARRAY作为一个包装的数组
      EXTERNAL_PROPERTY作为扩展属性
      EXISTING_PROPERTY作为POJO中已经存在的属性
    • 1

  2. 常用注解

    注解描述(常用属性)
    @JsonIgnore忽略字段,字段,get与set方法上
    value:默认为true,为false不忽略
    @JsonIgnoreProperties忽略字段,类上
    value: 数组,指定要忽略的字段
    ignoreUnknown:默认false,忽略不知道字段
    allowGetters: 默认false,允许从get方法获取值
    allowSetters():默认false,允许set方法设置值
    @JsonIgnoreType该类作为别的类的属性时,该属性忽略序列化和反序列化。
    value:默认为true,为false不忽略
    @JsonPropertyjson字段
    value:指定json字段
    access:指定权限,
    @JsonInclude指定排除某些字段;字段,类,参数,set与get方法上
    value:指定不显示某类字段
    valueFilter:自定义字段排除;value设为CUSTOM,valueFilter为一个重写equals的类,返回true的排除
    @JsonAlias别名,只在反序列化生效;字段,方法,参数上
    value:生成的json字段
    @JsonDeserialize指定自定义反序列化器;字段,方法,参数上
    using:指定自定义反序列化器
    @JsonSerialize指定自定义序列化器;字段,方法,参数上
    using:指定自定义序列化器
    @JsonMerge
    @JsonFilter指定使用所添加的过滤器;字段,方法,参数上
    value:过滤器名
    @JsonAutoDetect自动检测配置;类上
    fieldVisibility:字段自动检测配置
    @JsonFormatjson格式配置;字段,方法,参数上
    pattern: 配置日期格式,yyyy-MM-dd HH:mm:ss
    timezone: 配置时区,GMT+8
    @JsonUnwrapped对象扁平化配置,字段,方法,参数上
    enabled:启用配置,默认true
    prefix: 字段添加的前缀
    suffix:字段添加的后缀
    @JsonView同对象可配置Controller返回不同字段的json,
    value:对象内部接口类,标记的作用。
    在对象字段方法上用该注解表明展示那些字段,在Controller中再用该字段表明使用哪组字段,内部接口类可实现继承关系
    @JsonClassDescription类描述
    @JsonPropertyDescription字段描述
    @JacksonInjectjson默认值注入配置,字段,方法,参数上
    value:用于InjectableValues配置的标识
    @JsonAnySetter获取反序列时未匹配上的字段,作用在set方法上
    enabled:启用状态,默认为true
    @JsonAnyGetter获取反序列时未匹配上的字段,作用在get方法上
    enabled:启用状态,默认为true
    @JsonCreator指定反序列化时用的构造函数,默认采用无参构造
    反序列化时没有无参构造会报错,需用该注解指定构造方法,并@JsonProperty指明个参数
    @JsonSetter指定反序列化字段名,set方法上
    value:指定字段名
    @JsonGetter指定序列化字段名,get方法上
    value:指定字段名
    @JsonEnumDefaultValue设置枚举默认值
    @JsonPropertyOrder序列化时字段排序,类上
    value:字段顺序数组,未配字段排在后面
    @JsonRawValue可用于按原样序列化属性;方法,字段上
    value:默认为true,为false不生效
    为true时,json格式字段按json格式处理
    @JsonValuejson值,一个类只能有一个,序列化直接返回该值;方法,字段上
    value:默认为true,为false不生效
    @JsonRootName当配置带根目录序列化及反序列化时配置根节点;类上
    value:根节点名称
    @JsonTypeInfo作用于父类/接口,被用来开启多态类型处理,对基类/接口和子类/实现类都有效
    use:定义使用哪一种类型识别码
    include(可选):指定识别码是如何被包含进去的
    property(可选):制定识别码的属性名称
    defaultImpl(可选):如果类型识别码不存在或者无效,可以使用该属性来制定反序列化时默认类型
    visible(可选,默认为false):是否可见
    @JsonSubTypes作用于父类/接口,用来列出给定类的子类,只有当子类类型无法被检测到时才会使用它,一般是配合@JsonTypeInfo在基类上使用
    value: 指定子类
    @JsonTypeName作用于子类,用来为多态子类指定类型标识符的值,
    value: 子类指定类型标识符,对应JsonSubTypes.Type的name属性
    @JsonTypeIdResolver配置类型id解析器,当JsonTypeInfo属性use为JsonTypeInfo.Id.CUSTOM时使用
    value: 解析器
    @JsonTypeId字段上标记为类型识别码
    @JsonManagedReference解决双向引用导致的无限递归问题,字段上
    标注在循环引用要序列化的字段上
    @JsonBackReference解决双向引用导致的无限递归问题,字段上
    标注在循环引用要忽略的字段上
    @JsonIdentityReference用来解决循环嵌套的问题
    alwaysAsId: 始终按id,默认为false
    @JsonIdentityInfo用来解决循环嵌套的问题,为每个对象添加一个唯一标识,默认字段为@id,可通过property修改
    generator: 对象id生成器
    property 唯一标识字段
  3. 常用接口实现类及抽象类子类

    • FilterProvider

      可通过ObjectMapper的setFilterProvider方法设置

      • SimpleFilterProvider
      方法描述
      addFilter(String id, PropertyFilter filter)添加过滤器,id用来匹配实体上
      @JsonFilter注解value属性,
      不同实体采用不同过滤器
      removeFilter(String id)移除过滤器
      setDefaultFilter(PropertyFilter f)设置默认过滤器,实体没配@JsonFilter时使用该过滤器
      setFailOnUnknownId(boolean state)设置未知id是否失败
    • PropertyFilter

      • SimpleBeanPropertyFilter
      方法描述
      serializeAll()序列化全部
      filterOutAllExcept(String… propertyArray)指定要序列化的字段,参数可为set
      serializeAllExcept(String… propertyArray)指定不要序列化的字段,参数可为set
      from(BeanPropertyFilter src)从另一个过滤器获取
    • InjectableValues

      可通过ObjectMapper的setInjectableValues方法设置

      • Std
      方法描述
      addValue(String key, Object value)与@JacksonInject同用.用于通过key为反序列化json为定义的字段注入默认值
    • ObjectIdGenerator 对象id生成器

      实现类描述
      StringIdGenerator字符串id生成器
      UUIDGeneratorUUID生成器
      IntSequenceGenerator有序数列生成器
      PropertyBasedObjectIdGenerator基础字段id生成器
    • Module

      • Jdk8Module 支持jdk8日期类型

      • SimpleModule 可用于自定义模块

      方法描述
      addSerializer(Class<? extends T> type,
      JsonSerializer ser)
      添加某种数据类型的序列化器
      addDeserializer(Class type,
      JsonDeserializer<? extends T> deser)
      添加某种数据类型的反序列化器
      setSerializers(SimpleSerializers s)添加多组序列化器
      setDeserializers(SimpleDeserializers d)添加多组反序列化器
      • JavaTimeModule SimpleModule子类,处理不同的时区偏移格式

      • ParameterNamesModule SimpleModule子类,参数名称模块

      • JsonComponentModule SimpleModule子类json组件称模块

  4. 实例

    • 简单使用
    List<Person> list =new ArrayList();
    Person person = new Person();
    person.setName("zp");
    list.add(person);
    String jsonString = mapper.writeValueAsString(list);
    System.out.println(jsonString);
    List<Person> list1 = mapper.readValue(jsonString, 
                        new TypeReference<List<Person>>() {});//json转list
    Person person1 = mapper.readValue(jsonString,Person.class);//json转JavaBean
    
    • 泛型使用示例
    //list泛型
    CollectionType JavaType = mapper.getTypeFactory().constructCollectionType(List.class, Person.class);
    List<Person> personList = mapper.readValue(JSONInString, JavaType); 
    List<Person> personList = mapper.readValue(JSONInString, new TypeReference<List<Person>>(){});
    //map泛型
    MapType JavaType = mapper.getTypeFactory().constructMapType(HashMap.class,String.class,Person.class);
     Map<String, Person> personMap = mapper.readValue(JSONInString,JavaType);
     Map<String, Person> personMap = mapper.readValue(JSONInString, new TypeReference<Map<String, Person>>() {});
    
    • 自定义序列化器
      public class DateJsonSerializer extends JsonSerializer<Date> {
        public static final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        @Override
        public void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
         jsonGenerator.writeString(format.format(date));
        }
    }
    
    • 自定义反序列化
    public class DateJsonDeserializer extends JsonDeserializer<Date> {
        public static final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        @Override
        public Date deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) {
            try {
                if (jsonParser != null && jsonParser.getText() != null) {
                    return format.parse(jsonParser.getText());
                } else {
                    return null;
                }
            } catch (Exception e) {
                throw new RuntimeException(e);
         }
        }
    }
    
    • 反序列化未定义字段采用map接收
     //实体类新增map字段
        private Map<String,Object> other = new HashMap<>();
    	//新增以下get/set方法
        @JsonAnyGetter
        public Map<String, Object> getOther() {
            return other;
        }
        @JsonAnySetter
        public void setOther(Map<String,Object> map) {
            this.other  =m6ap;
        }
    
  5. 其他

    • jsr310

      处理日期类型为 Java.time.LocalDate,引入依赖并注册以下模块

       objectMapper.registerModule(new JSR310Module ())
      
    • joda

      处理日期类型为org.joda.time.DateTime,引入依赖并注册以下模块

      mapper.registerModule(new JodaModule())
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郑重其事,鹏程万里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值