这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 的 RFC ( https://www.rfc-editor.org/rfc/rfc7159 ) 明确指出以下内容:
JSON 值必须是对象、数组、数字或字符串,或
以下三个文字名称之一:
假空真
文字名称必须是小写的。不允许使用其他文字名称
。
值=假/空/真/对象/数组/数字/字符串
错误 = %x66.61.6c.73.65 ;错误的
空=%x6e.75.6c.6c;无效的
真 = %x74.72.75.65 ;真的
编辑:
我最初有一个解决方法,但我删除了它,因为我真的认为你应该遵循 RFC。RFC 明确指出 NULL 对象必须由“null”表示,因此任何变通方法都不是一个好主意。
为了与 RFC 保持一致,我将存储“null”或返回“null”而不是 NULL。当您反序列化“null”时,它将返回一个 NULL 值。