con*_*riq 6 c# null json json.net null-string
在下面的代码行中,string x当clInitializer.AVOptions = null值为:时,我最终成为实际字符串"null" :
string x = JsonConvert.SerializeObject(clInitializer.AVOptions, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore});
Run Code Online (Sandbox Code Playgroud)
如实际的单词"null"而不是null值或者也许{}.我不确定这是预期的行为.有谁知道如何让它不返回"null"这个词,或者我对如何JsonConvert运作有一些根本的误解.先感谢您.
这NullValueHandling与属性的空值有关,而与自身的对象无关.
例如,如果您有以下示例:
public class ExampleClass
{
public string NullProperty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后你序列化它:
var obj = new ExampleClass();
var jsons = JsonConvert.SerializeObject(obj, new JsonSerializerSettings() { NullValueHandling = NullValueHandling.Ignore });
Run Code Online (Sandbox Code Playgroud)
然后NullProperty被忽略,你得到{}.
编辑
返回"null"的原因是因为JSON的RFC(https://tools.ietf.org/html/rfc7159)明确说明了以下内容:
JSON值必须是对象,数组,数字或字符串,或
以下三个文字名称之一:false null true
文字名称必须小写.不允许使用其他文字名称
.value = false/null/true/object/array/number/string
false =%x66.61.6c.73.65; 假
null =%x6e.75.6c.6c; 空值
true =%x74.72.75.65; 真正
编辑:
我最初有一个工作,但我删除它,因为我真的认为你应该遵循RFC.RFC明确指出NULL对象必须用"null"表示,所以任何解决方法都不是一个好主意.
为了保持RFC,我会存储"null"或返回"null"而不是NULL.反序列化"null"时,它将返回NULL值.
〜干杯