gpt4 book ai didi

c# - JsonConvert.SerializeObject : Unexpected result when Serializing null value

转载 作者:太空狗 更新时间:2023-10-29 21:16:17 30 4
gpt4 key购买 nike

在下面的代码行中,当 clInitializer.AVOptions = null 值时,我的 string x 最终成为实际字符串“null”:

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

如实际单词“null”而不是 null 值或 {}。我不确定这是预期的行为。有谁知道如何让它不返回“null”这个词,或者我对 JsonConvert 的工作原理有一些根本性的误解。提前谢谢你。

最佳答案

NullValueHandling 与属性的 null 值有关,而不是它自身的对象。

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

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://www.rfc-editor.org/rfc/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 值。

关于c# - JsonConvert.SerializeObject : Unexpected result when Serializing null value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47027376/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com