JavaScriptSerializer 可以排除具有 null/默认值的属性吗?
我正在使用 JavaScriptSerializer 来序列化一些实体对象。
问题是,许多公共属性包含 null 或默认值。有没有办法让 JavaScriptSerializer 排除具有 null 或默认值的属性?
我希望生成的 JSON 不那么冗长。
I'm using JavaScriptSerializer to serialize some entity objects.
The problem is, many of the public properties contain null or default values. Is there any way to make JavaScriptSerializer exclude properties with null or default values?
I would like the resulting JSON to be less verbose.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
仅供参考,如果您想采用更简单的解决方案,下面是我使用 JavaScriptConverter 实现和 JavaScriptSerializer 来完成此操作的方法:
然后使用它:
FYI, if you'd like to go with the easier solution, here's what I used to accomplish this using a JavaScriptConverter implementation with the JavaScriptSerializer:
and then to use it:
对我有用的解决方案:
序列化的类和属性将装饰如下:
IsRequired 是关键项。
实际的序列化可以使用 DataContractJsonSerializer 完成:
The solution that worked for me:
The serialized class and properties would be decorated as follows:
IsRequired was the key item.
The actual serialization could be done using DataContractJsonSerializer:
为了那些在 google 上找到此内容的人的利益,请注意,在使用 Newtonsoft.Json 进行序列化期间可以本机跳过空值
For the benefit of those who find this on google, note that nulls can be skipped natively during serialization with Newtonsoft.Json
您可以实现
JavaScriptConverter
并使用 JavaScriptSerializer的RegisterConverters
方法。You can implement a
JavaScriptConverter
and register it using theRegisterConverters
method ofJavaScriptSerializer
.Json.NET 具有自动排除空值或默认值的选项。
Json.NET has options to automatically exclude null or default values.
此代码是数字类型的块 null 和 default(0) 值
This code is block null and default(0) values for numeric types
无需更改 DataContractSerializer
您可以使用 ScriptIgnoreAttribute
[1] http://msdn.microsoft.com/en-us/library/system.web.script.serialization.scriptignoreattribute.aspx
Without changing toe DataContractSerializer
You can use ScriptIgnoreAttribute
[1] http://msdn.microsoft.com/en-us/library/system.web.script.serialization.scriptignoreattribute.aspx