当前位置: 首页 > 编程语言 > C#

Newtonsoft Json.Net序列化JObject不会忽略空值,即使使用正确的设置也是如此分享

时间:2023-04-10 13:02:30 C#

C#学习教程:NewtonsoftJson.Net序列化JObject不会忽略空值,即使设置正确尝试使用NewtonsoftJson.Net序列化对象。这个对象是一个匿名类型,充满了很多异质的东西,主要是普通的POCO,但也有一些JObject或JArray。问题在于,将NullValueHandling属性添加到NullValueHandling.Ignore时,每个空属性都将被忽略,但NullValueHandling.Ignore只是“常规”.Net对象的一部分。JObject或JArray每个空属性JArray保留。这是一个最小的例子:varjobj=JObject.FromObject(newAnything{x=1,y="bla",z=null});varpoco=newFoo{foo1="bar",foo2=null};varserialized=JsonConvert.SerializeObject(new{source1=poco,source2=jobj},Newtonsoft.Json.Formatting.None,newJsonSerializerSettings{NullValueHandling=NullValueHandling.Ignore});有没有一种简单的方法可以忽略这些空值?我是否缺少某些设置选项?还是我必须手动处理?JObject“null”值实际上是一个非空JValue,其JValue.Type等于JTokenType.Null。当这样的值真正出现在JSON中时,表明该JSON值为null。我相信它捕获了以下两个JSON对象之间的区别:"source2":{"z":null}"source2":{}在第一种情况下,属性"z"存在一个空JSON值。在第二种情况下,属性“z”不存在。Linq-to-JSON表示第一种情况,即具有空类型JValue而不是JProperty.Value实际上为空。为防止将JObject的值标记为null,在创建JObject时使用相应的序列化程序设置:以上是C#学习教程:NewtonsoftJson.Net序列化JObject不会忽略空值,即使设置正确如果所有内容shared对你有用,你需要了解更多C#学习教程,希望你多多关注—varjobj=JObject.FromObject(new{x=1,y="bla",z=(int?)null},newJsonSerializer{NullValueHandling=NullValueHandling.Ignore});本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: