大佬教程收集整理的这篇文章主要介绍了Newtonsoft Json.Net序列化JObject即使设置正确也不会忽略null,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
一个"null"
在值JObject
实际上是一个
_非空JValue
_与JValue.Type
等于JTokenType.Null
。当此值实际出现在JsON中时,它表示null的JsON值。我相信它的存在是为了捕获以下两个JsON对象之间的差异:
"source2": {
"z": null
}
"source2": {
}
在第一种情况下,该属性"z"
带有null
JsON值。在第二种情况下,该属性"z"
不存在。linq-to-
JsON表示第一种情况是null类型,JValue
而不是JProperty.Value
实际 为null 。
为防止空令牌渗透到您JObject
的值中,请在JObject
从某些POCO 创建时使用适当的序列化器设置:
var jobj = JObject.FromObject(new
{
x = 1,
y = "bla",
z = (int?)null
}, new Jsonserializer { NullValueHandling = NullValueHandling.Ignore } );
(请注意,POCO本身本身不一定已经是JObject
。无类型方法,JsonConvert.DeserializeObject(JsonString)
或者JsonConvert.DeserializeObject<dynamic>(JsonString)
默认情况下,JObject
当根JsON容器JsonString
为JsON对象时,默认情况下将返回a
。)
我正在尝试使用Newtonsoft Json.Net序列化对象。
该对象是一个匿名类型,其中填充了许多异构事物,主要是常规POCO,但也包含JObject
s或JArray
s。
问题是,将NullValueHandling
属性添加到时NullValueHandling.Ignore
,每个null属性都将被忽略,但前提是它是“常规”
.Net对象的一部分。JObject
或内的每个null属性都会JArray
保留。
这是一个最小的示例:
var jobj = JObject.FromObject(new Anything{
x = 1,y = "bla",z = null
});
var poco = new Foo {
foo1 = "bar",foo2 = null
};
var serialized = JsonConvert.serializeObject(new {
source1 = poco,source2 = jobj
},Newtonsoft.Json.FormatTing.None,new JsonserializerSetTings { NullValueHandling = NullValueHandling.IgnorE});
是否有一种简单的方法也可以忽略这些空值?我错过了一些设置选项吗?还是我必须手动处理?
以上是大佬教程为你收集整理的Newtonsoft Json.Net序列化JObject即使设置正确也不会忽略null全部内容,希望文章能够帮你解决Newtonsoft Json.Net序列化JObject即使设置正确也不会忽略null所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。