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)进行处理。

为什么fastjson字段为null时不输出空字符串?

posted @   槑孒  阅读(411)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
历史上的今天:
2021-10-19 ArcPy条件分析工具集
点击右上角即可分享
微信分享提示