c# - 对象类型值在 newtonsoft 序列化时被忽略
问题描述
想要获得忽略默认值的序列化输出。就我而言,我已将对象属性的默认值定义为 null。面临忽略对象数据基于类型的默认值的问题。找到以下尝试过的代码。
MyClass myClass = new MyClass();
myClass.item1 = false;
myClass.item2 = 0;
myClass.item3 = "test";
myClass.item4 = new { item1Val = false, item2Val = 0, item3Val = "test" };
var output = JsonConvert.SerializeObject(myClass, Formatting.Indented, new JsonSerializerSettings
{
DefaultValueHandling = DefaultValueHandling.Ignore,
NullValueHandling = NullValueHandling.Ignore
});
//...
public class MyClass
{
[DefaultValue(true)]
public bool item1 { get; set; }
[DefaultValue(10)]
public int item2 { get; set; }
[DefaultValue("")]
public string item3 { get; set; }
[DefaultValue(null)]
public object item4 { get; set; }
}
实际输出:
{
"item1": false,
"item2": 0,
"item3": "test",
"item4": {
"item3Val": "test"
}
}
预期输出:
{
"item1": false,
"item2": 0,
"item3": "test",
"item4": {
"item1Val": false,
"item2Val": 0,
"item3Val": "test"
}
}
注意:我需要这个全局设置 DefaultValueHandling = DefaultValueHandling.Ignore, & NullValueHandling = NullValueHandling.Ignore。
任何人都对此提出建议。
解决方案
推荐阅读
- r - R在读取文件时添加额外的数字
- c++ - 尝试在 ARM 板上使用 PKCS1_OAEP 使用 rsa 公钥加密数字时出现“cryptodev_digest_update:非法输入”错误
- gitlab - Gitlab:如何将原始日志收集到工件中?
- azure - Azure AKS:找出节点重新启动的原因
- angular - 如何在角度 2/4 中使用具有相同点击事件的两个函数?
- html - bootstrap 4手风琴没有关闭
- python - 将 Flask 环境默认设置为开发模式?
- xmgrace - 您能帮我如何更改 xmgrace 上数据集的顺序吗?
- excel - 如何通过excel VBA以只读方式打开电子表格中的嵌入对象
- node.js - mongoDB 4.0 / Compass:连接字符串中未提供主机名或主机名