C# 在newtonsoft序列化上忽略对象类型值
希望获得忽略默认值的序列化输出。在我的例子中,我为对象属性定义了默认值为null。忽略对象数据基于类型的默认值时遇到问题。找到下面的代码C# 在newtonsoft序列化上忽略对象类型值,c#,json.net,C#,Json.net,希望获得忽略默认值的序列化输出。在我的例子中,我为对象属性定义了默认值为null。忽略对象数据基于类型的默认值时遇到问题。找到下面的代码 MyClass myClass = new MyClass(); myClass.item1 = false; myClass.item2 = 0; myClass.item3 = "test"; myClass.item4 = new { item1Val = f
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
任何人都可以就此提供建议。您需要DefaultValueHandling=DefaultValueHandling。包括以获得预期的输出。否则,您需要使用已定义的DefaultValue而不是“object”指定一个适当的类型。是否有可能仅对object类型忽略此选项?在这种情况下,我很困惑,是否内部预定义了任何基于类型的默认值(即bool(false)、integer(0)),因为我没有在任何地方定义这些默认值。我猜DefaultValueHandling仅依赖于[DefaultValue]属性。也许这可以帮助您: