c# - C# 属性值作为 Json 键名
问题描述
我有这样的Json:
{
"Result": {
"Bruce": {
"City": "Gotham",
"Age": 43
},
"Clark": {
"City": "Metro",
"Age": 43
}
}
}
当我反序列化它时,我需要以下类结构
public class Clark
{
public string City { get; set; }
public int Age { get; set; }
}
public class Bruce
{
public string City { get; set; }
public int Age { get; set; }
}
public class Result
{
public Bruce Bruce { get; set; }
public Clark Clark { get; set; }
}
public class RootObject
{
public Result Result { get; set; }
}
这意味着我需要创建特定的类,如Bruce、Clark等。是否可以反序列化这个 Json,而不是单独的 Bruce、Clark 等,我只有一个这样的 Person 类
public class Person
{
public string Name { get; set; }
public string City { get; set; }
public int Age { get; set; }
}
public class Result
{
public List<Person> Persons { get; set; }
}
public class RootObject
{
public Result Result { get; set; }
}
使 JSON 变为:
{
"Result": {
"Persons": [
{
"Name": "Bruce",
"City": "Gotham",
"Age": 43
},
{
"Name": "Clark",
"City": "Metro",
"Age": 43
}
]
}
}
解决方案
您的 Json 描述了一个具有单个属性的对象,Result
称为Dictionary<string, Person>
.
所以你的班级只需要看起来像:
public class Person
{
public string Name { get; set; }
public string City { get; set; }
public int Age { get; set; }
}
public class RootObject
{
public Dictionary<string, Person> Result { get; set; }
}