加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – JsonConvert.SerializeObject:序列化空值时出现意外结果

发布时间:2020-12-15 23:41:10 所属栏目:百科 来源:网络整理
导读:在下面的代码行中,当clInitializer.AVOptions = null值时,我的字符串x最终成为实际字符串“null”: string x = JsonConvert.SerializeObject(clInitializer.AVOptions,new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore}); 如实
在下面的代码行中,当clInitializer.AVOptions = null值时,我的字符串x最终成为实际字符串“null”:

string x = JsonConvert.SerializeObject(clInitializer.AVOptions,new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore});

如实际的单词“null”而不是空值或者可能是{}.我不确定这是预期的行为.有谁知道如何让它不返回“null”这个词,或者我对JsonConvert的工作方式有一些基本的误解.先感谢您.

解决方法

NullValueHandling与属性的空值有关,而与自身的对象无关.

例如,如果您有以下示例:

public class ExampleClass
{
    public string NullProperty { get; set; }
}

然后你序列化它:

var obj = new ExampleClass();
var jsons = JsonConvert.SerializeObject(obj,new JsonSerializerSettings() { NullValueHandling = NullValueHandling.Ignore });

然后忽略NullProperty,你得到{}.

编辑

返回“null”的原因是因为JSON(https://tools.ietf.org/html/rfc7159)的RFC明确说明了以下内容:

A JSON value MUST be an object,array,number,or string,or one of
the following three literal names:

false null true

The literal names MUST be lowercase. No other literal names are
allowed.

value = false / null / true / object / array / number / string

false = %x66.61.6c.73.65 ; false

null = %x6e.75.6c.6c ; null

true = %x74.72.75.65 ; true

编辑:

我最初有一个工作,但我删除它,因为我真的认为你应该遵循RFC. RFC明确指出NULL对象必须用“null”表示,所以任何解决方法都不是一个好主意.

为了保持RFC,我会存储“null”或返回“null”而不是NULL.反序列化“null”时,它将返回NULL值.

?干杯

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读