| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发工具 -> Newtonsoft.Json 与 System.Text.Json 序列化时如何省略空集合 -> 正文阅读 |
|
[开发工具]Newtonsoft.Json 与 System.Text.Json 序列化时如何省略空集合 |
最近项目中有一个比较特殊的需求,在返回给前端树形json数据时,将等于NULL和集合count等于0的设置为忽略序列化;由于返回数据中集合较多,一时间没有太好的方案,于是开始在递归方法中处理数据,将集合数据为空或集合为0的数据赋值为NULL,但是实践过程不是很理想,于是翻看一些资料。 首先,介绍一下Newtonsoft.Json: 方案一: 如果您正在寻找一种可以在不同类型中通用且不需要任何修改(属性等)的解决方案,那么我认为最好的解决方案是自定义DefaultContractResolver类。它将使用反射来确定IEnumerable给定类型的任何值是否为空,代码如下:
您可以在您的框架的定制契约解析器中实现这个功能,此方案无需修改的你的代码,此方法相当于一些助手方法。 方案二:
最终我采用上面的方案二,修改我得VM实体类属性代码,目前在应用中没有出现问题。 其次,System.Text.Json: 测试试图弄清楚如何序列化为json对象,并跳过序列化值为空列表的属性。测试没有使用Newtonsoft json。 封装有一个带有属性的对象:
在我测试中尝试使用以下命令序列化此对象时:
结果中仍然给我一个空数组:"HlfjList": [],难道没有方法或属性阻止它序列化这些空列表吗?我不希望看到 经过一番比对查找代码后发现JsonIgnoreCondition.WhenWritingNull这个属性,于是修改代码再次尝试: 1.添加具有相同签名的新属性,但使用JsonPropertyNameAttribute标记它,以确保使用正确的名称对其进行序列化,并使用JsonIgnoreAttribute进行序列化,以便在返回null时不会对其进行序列化。 代码如下:
至此,测试结束,希望对有用到的小伙伴们有帮助,如果您有更好的方案请留言给我。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/19 6:26:15- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |