FastJson 序列化处理 null 值
FastJson 序列化处理 null 值的
1. 默认行为
FastJson序列化时默认跳过值为null的字段。这意味着如果一个对象的某个字段为null,序列化后的 JSON 不会包含该字段。
2. 序列化 null 字段
- 如果希望保留
null值字段,即使字段的值为null也要在 JSON 中体现出来,可以使用SerializerFeature.WriteMapNullValue配置。这会让所有字段即使是null也被序列化。
3. 将 null 字符串输出为空字符串
-
对于
String类型的字段,使用SerializerFeature.WriteNullStringAsEmpty可以将null值序列化为空字符串""。示例:{ "field": "" }但要注意,这个配置只对
String类型的字段有效。
4. 将 null 值转换为其他默认值
- FastJson 提供了一系列
SerializerFeature用于处理不同类型的null值:WriteNullStringAsEmpty: 将null字符串输出为空字符串""。WriteNullNumberAsZero: 将null数字类型字段输出为0。WriteNullListAsEmpty: 将null列表类型字段输出为空列表[]。WriteNullBooleanAsFalse: 将null布尔类型字段输出为false。
5. 示例代码
如果希望将 null 值保留,同时将字符串类型的 null 输出为空字符串,可以在序列化时配置多个 SerializerFeature:
return JSON.toJSONString(t,
JSONWriter.Feature.WriteClassName, // 输出类型名
SerializerFeature.WriteMapNullValue, // 保留 null 值字段
SerializerFeature.WriteNullStringAsEmpty // 将 null 字符串输出为空字符串
).getBytes(DEFAULT_CHARSET);
6. 注意事项
- 对于非字符串类型的字段(如
Integer,LocalDateTime),WriteNullStringAsEmpty不适用。这些字段如果为null,需要使用其他对应的SerializerFeature(如WriteNullNumberAsZero)进行处理。

浙公网安备 33010602011771号