Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Json.net的条件属性序列化_C#_Json_Serialization_Json.net - Fatal编程技术网

C# Json.net的条件属性序列化

C# Json.net的条件属性序列化,c#,json,serialization,json.net,C#,Json,Serialization,Json.net,我想知道是否有一种优雅的方法可以避免使用Json.net序列化空值属性。这显示了两种条件序列化方法,但这两种方法都不是我想要的。第一种方法接近我想要的,但不令人满意。例如,您应该为每个属性创建一个方法(ShouldSerialize+'property name'())。这不是一个优雅的解决方案,因为所有方法都必须是公共的,并且在那里是可见的。所以,如果你有20个属性,这意味着你应该有20个方法,或者有更好的方法吗? 最好的解决方案是使用一种方法,比如说序列化(对象属性、对象值);当对象的属性即

我想知道是否有一种优雅的方法可以避免使用Json.net序列化空值属性。这显示了两种条件序列化方法,但这两种方法都不是我想要的。第一种方法接近我想要的,但不令人满意。例如,您应该为每个属性创建一个方法(ShouldSerialize+'property name'())。这不是一个优雅的解决方案,因为所有方法都必须是公共的,并且在那里是可见的。所以,如果你有20个属性,这意味着你应该有20个方法,或者有更好的方法吗?
最好的解决方案是使用一种方法,比如说序列化(对象属性、对象值);当对象的属性即将序列化时调用。请帮助…

查看中所示的示例

此示例将对象序列化为JSON,并将NullValueHandling设置为忽略,以便JSON结果中不包含具有默认值的属性


谢谢你的回复。这足以处理空值属性。这个实现的唯一问题是它返回字符串而不是json对象。我可以使用JObject.Parse()方法获取json对象。帮了大忙!
string jsonIgnoreNullValues = JsonConvert.SerializeObject(person, Formatting.Indented, new JsonSerializerSettings
{
    NullValueHandling = NullValueHandling.Ignore
});