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)读取未知枚举使用默认值
读取未知枚举是否使用默认值,不使用则报错
举例:
结果: