c# - 在 Json.NET 序列化期间忽略某些属性,但在其他属性上是必需的
问题描述
我正在使用 Json.Net 来序列化一个对象。这是代码:
var jsonText = JsonConvert.SerializeObject(objectToSerialize, Formatting.Indented,
new JsonSerializerSettings { DefaultValueHandling = DefaultValueHandling.Ignore });
DefaultValueHandling 设置为忽略,因此结果字符串不包含具有默认值的属性。
在 Serialized 类中,无论如何都有一个唯一的属性应该在结果字符串上,所以我使用一个属性来确保该属性会在那里:
[JsonProperty(PropertyName = "componentMainVersion", Required = Required.Always)]
public ushort Version { get; set; }
问题是该属性没有生成到字符串。将字符串反序列化回对象时出现异常:
“Newtonsoft.Json.Schema.JsonSchemaException:'对象缺少必需的属性:版本......”
如何确保该属性无论如何都会在结果字符串中(默认值与否)?
解决方案
试试下面的代码
[JsonProperty(PropertyName = "componentMainVersion", DefaultValueHandling = DefaultValueHandling.Include)]
public ushort Version { get; set; }
Required 是一个不同的属性,它确保始终需要该属性的值
推荐阅读
- ffmpeg - 没有这样的文件或目录 discord.py
- kubernetes - Nginx Ingress 路径重定向到 azure K8 中的多个服务
- reactjs - React 和 React Hooks:在子组件中使用 onClick 函数来触发父包装组件的函数
- python - 从 csv 中删除不需要的行时出现 IndexError
- laravel - Storybook.js 正在破坏通过 webpack 加载的字体
- vue.js - 内容安全策略拒绝 v-html 中的 XSS 攻击
- php - PHP - 表单提交后,电子邮件表单发送超过 50 封邮件
- mongodb - mongo inside ansible-operator image
- java - 将信息从一个班级调用到另一个班级?
- javascript - 如何允许用户滚动大文本文件?