JackJson Feature

本文详细介绍了JackJson的序列化Feature和反序列化Feature,包括WRAP_ROOT_VALUE、INDENT_OUTPUT、FAIL_ON_EMPTY_BEANS等多个配置项,讲解了它们的功能和使用示例,帮助理解如何定制JSON输出和解析行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. JackJson Feature

1.1.  SerializationFeature序列化Feature

1.1.1. WRAP_ROOT_VALUE(false)  环绕根元素

输出json格式的时候是否携带根元素

objectMapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true);

举例:

 

结果:

 

1.1.2.   INDENT_OUTPUT(false) 缩放排列输出

输出的时是否打印出漂亮的json格式

objectMapper.configure(SerializationFeature.INDENT_OUTPUT, true);

举例:一个实体属性为name,那么输出结果:

 

1.1.3. FAIL_ON_EMPTY_BEANS(true) 如果是空对象的时候,序列化是否异常(注意这里的空对象指的是没有Field域的对象)

举例:

 

结果:

 

1.1.4. CLOSE_CLOSEABLE(false)序列化root级对象实现closeable接口的close方法的调用顺序

序列化root级对象的实现closeable接口的close方法是否在序列化后被调用

举例:

 

结果:

 

1.1.5. WRITE_DATES_AS_TIMESTAMPS(true) 日期类型的字段时间戳输出

日期字段是否以时间戳的格式进行输出,默认true

objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, true);

举例:

 

结果:

 

1.1.6. WRITE_DATE_KEYS_AS_TIMESTAMPS(false) Map中key类型为日期的输出

将Map中得key为Date的值,也序列化为timestamps形式(否则,会被序列化为文本形式的值)默认为false

举例:

 

结果:

 

1.1.7. WRITE_CHAR_ARRAYS_AS_JSON_ARRAYS(false) 序列化char[]以json数组输出

序列化char[]时以json数组输出,默认false

举例:

 

结果:

 

1.1.8. WRITE_ENUMS_USING_TO_STRING(false)序列化枚举输出

序列化枚举是以toString()来输出,默认false,即默认以name()来输出

objectMapper.configure(SerializationFeature.WRITE_ENUMS_USING_TO_STRING,true);

举例:

 

结果:

 

1.1.9. WRITE_ENUMS_USING_INDEX(false) 枚举值是序列化为数字输出

这个特性决定Java枚举值是否序列化为数字(true)或者文本值(false).如果是值的话,则使用Enum.ordinal()

优先级高于WRITE_ENUMS_USING_TO_STRING

举例:

 

结果:

 

1.1.10. WRITE_SINGLE_ELEM_ARRAYS_UNWRAPPED(false) 单数组输出

序列化单元素数组时不以数组来输出,默认false

objectMapper.configure(SerializationFeature.WRITE_SINGLE_ELEM_ARRAYS_UNWRAPPED,true);

举例:

 

结果:

 

1.1.11. ORDER_MAP_ENTRIES_BY_KEYS(false) map  key 排序输出

序列化Map时对key进行排序操作,默认false(按hashCode降序排序)

举例:

 

结果:

 

1.2. DeserializationFeature序列化Feature

1.2.1. USE_BIG_DECIMAL_FOR_FLOATS(false)   浮点小数转化为BigDecimal型

反序列化时是否将浮点小数转为BigDecimal型(字段类型优先级高,字段类型为Object则默认转化为Double,设置此属性true则类型为BigDecimal)

举例: 

 

结果:

 

1.2.2. USE_BIG_INTEGER_FOR_INTS(false) 整型转化为BigInteger

反序列化时是否将整型转化为BigInteger型(字段类型优先级高)

举例:

 

结果:

 

1.2.3. USE_LONG_FOR_INTS(false) 整型转化为Long

反序列化时是否将整型转化为Long型(字段类型优先级高)

举例:

 

结果:

 

1.2.4. USE_JAVA_ARRAY_FOR_JSON_ARRAY(false) JSONArray转换转换为数组

将JSONArray转换成java数组还是集合,true则转换为数组(字段类型优先级高)

举例:

 

结果:

 

1.2.5. FAIL_ON_UNKNOWN_PROPERTIES(true)    未知属性忽略

Json中存在,java对象中不存在,遇到json中未知属性是否抛出异常,默认抛出

举例:

 

结果:

 

1.2.6. FAIL_ON_NULL_FOR_PRIMITIVES(false)   基础数据类型(int等)为null的处理

基础数据类型(int等)为null是否报错,默认为不报错,并复制为初始值

举例:

 

结果:

1.2.7. FAIL_ON_NUMBERS_FOR_ENUMS(false)  根据int值获取获取Enum

是否根据int代表Enum的order()來反序列化Enum

举例:

结果:

        

1.2.8. FAIL_ON_READING_DUP_TREE_KEY(false) 重复Key

反序列化时,遇到json数据存在两个相同的key时是否报异常。默认为false

举例:

结果:

1.2.9. FAIL_ON_MISSING_CREATOR_PROPERTIES(false)  json中缺省构造函数中的参数

Json中缺省构造函数中的参数是否进行报错

举例:

结果:

1.2.10. FAIL_ON_NULL_CREATOR_PROPERTIES(false)json中构造函数的参数为null

Json中构造函数的参数为null是否进行报错

举例:

结果:

1.2.11. ACCEPT_SINGLE_VALUE_AS_ARRAY(false) 单值转化为list

反序列化时,是否接受单个value转为List,如json字符串中单个String值 可以转为Bean中的List

举例:

结果:

1.2.12. UNWRAP_SINGLE_VALUE_ARRAYS(false) json数组映射实体单值

Json数组是否映射为实体单值

举例:

结果:

1.2.13. ACCEPT_FLOAT_AS_INT(true) Float转化为Int

反序列化时,是否支持Float类型转为Int

举例:

结果:

 

1.2.14. READ_ENUMS_USING_TO_STRING(false)通过toString的值获取枚举

是否通过toString的值获取枚举对象,默认使用name()

举例:

结果:

1.2.15. READ_UNKNOWN_ENUM_VALUES_AS_NULL(false)未知的枚举为null

是否支持读取未知枚举,不支持则报错,支持则枚举为null

举例:

结果:

 

1.2.16. READ_UNKNOWN_ENUM_VALUES_USING_DEFAULT_VALUE(false)读取未知枚举使用默认值

读取未知枚举是否使用默认值,不使用则报错

举例:

结果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值