gpt4 book ai didi

c# - JSON.net 缺少属性的默认值

转载 作者:IT王子 更新时间:2023-10-29 03:49:24 25 4
gpt4 key购买 nike

我正在使用 Json.net 将对象序列化到数据库。

我向类添加了一个新属性(数据库中的 json 中缺少该属性),我希望新属性在 json 中缺少时具有默认值。

我尝试了 DefaultValue 属性,但它不起作用。我正在使用私有(private) setter 和构造函数来反序列化 json,因此在构造函数中设置属性的值将不起作用,因为有一个带有该值的参数。

示例如下:

    class Cat
{
public Cat(string name, int age)
{
Name = name;
Age = age;
}

public string Name { get; private set; }

[DefaultValue(5)]
public int Age { get; private set; }
}

static void Main(string[] args)
{
string json = "{\"name\":\"mmmm\"}";

Cat cat = JsonConvert.DeserializeObject<Cat>(json);

Console.WriteLine("{0} {1}", cat.Name, cat.Age);
}

我预计年龄为 5,但实际为零。

有什么建议吗?

最佳答案

我找到了答案,只需要添加以下属性:

[JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)]

在你的例子中:

class Cat
{
public Cat(string name, int age)
{
Name = name;
Age = age;
}

public string Name { get; private set; }

[DefaultValue(5)]
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)]
public int Age { get; private set; }
}

static void Main(string[] args)
{
string json = "{\"name\":\"mmmm\"}";

Cat cat = JsonConvert.DeserializeObject<Cat>(json);

Console.WriteLine("{0} {1}", cat.Name, cat.Age);
}

参见 Json.Net Reference

关于c# - JSON.net 缺少属性的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29611445/

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