【发布时间】:2015-06-19 02:59:37
【问题描述】:
我正在使用 Json.net 将对象序列化到数据库。
我向类中添加了一个新属性(数据库中的 json 中缺少该属性),并且我希望新属性在 json 中缺少时具有默认值。
我尝试了 DefaultValue 属性,但它不起作用。我正在使用私有的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 岁,但它是零。
有什么建议吗?
【问题讨论】:
-
在 C# 6 中,如果我没记错的话,这将是
public int Age { get; private set; } = 5;。 -
我正在使用构造函数,所以它不起作用。