程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Newtonsoft Json.Net序列化JObject即使设置正确也不会忽略null大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Newtonsoft Json.Net序列化JObject即使设置正确也不会忽略null?

开发过程中遇到Newtonsoft Json.Net序列化JObject即使设置正确也不会忽略null的问题如何解决?下面主要结合日常开发的经验,给出你关于Newtonsoft Json.Net序列化JObject即使设置正确也不会忽略null的解决方法建议,希望对你解决Newtonsoft Json.Net序列化JObject即使设置正确也不会忽略null有所启发或帮助;

一个"null"在值JObject实际上是一个 _非空JValue_与JValue.Type等于JTokenType.Null。当此值实际出现在JsON中时,它表示null的JsON值。我相信它的存在是为了捕获以下两个JsON对象之间的差异:

  "source2": {
    "z": null
  }

  "source2": {
  }

在第一种情况下,该属性"z"带有nullJsON值。在第二种情况下,该属性"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,但也包含JObjects或JArrays。

问题是,将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,请注明来意。
标签: