c# – JsonConvert.SerializeObject:序列化空值时出现意外结果
在下面的代码行中,当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明确说明了以下内容:
编辑: 我最初有一个工作,但我删除它,因为我真的认为你应该遵循RFC. RFC明确指出NULL对象必须用“null”表示,所以任何解决方法都不是一个好主意. 为了保持RFC,我会存储“null”或返回“null”而不是NULL.反序列化“null”时,它将返回NULL值. ?干杯 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |