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
)进行处理。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
2021-10-19 ArcPy条件分析工具集