C# 使用不同对象名称的Newtonsoft Json解析
目前,我正在尝试解析从API收到的一些JSON。以下是我得到的一些结果:C# 使用不同对象名称的Newtonsoft Json解析,c#,json,json.net,C#,Json,Json.net,目前,我正在尝试解析从API收到的一些JSON。以下是我得到的一些结果: { "2": { "id": 2, "name": "Cannonball", "members": true, "sp": 5, "buy_average": 152, "buy_quantity": 358914, "sell_average": 151, "sell_quantity
{
"2": {
"id": 2,
"name": "Cannonball",
"members": true,
"sp": 5,
"buy_average": 152,
"buy_quantity": 358914,
"sell_average": 151,
"sell_quantity": 778131,
"overall_average": 152,
"overall_quantity": 1137045
},
"6": {
"id": 6,
"name": "Cannon base",
"members": true,
"sp": 187500,
"buy_average": 184833,
"buy_quantity": 9,
"sell_average": 180518,
"sell_quantity": 10,
"overall_average": 182562,
"overall_quantity": 19
}
}
我需要把它解析成一个C类。我尝试复制JSON并使用paste special将其转换为类,但随后它为每个JSON对象创建了一个类
有人对我如何解析它有什么建议吗?属性总是相同的,只是对象2:这就是问题所在。这里的技巧是反序列化到类类型的字典。例如:
public class Thing
{
public int Id { get; set; }
public string Name { get; set; }
public bool Members { get; set; }
// etc...
}
现在你可以这样反序列化:
var result = JsonConvert.DeserializeObject<Dictionary<string, Thing>>(json);
注意:如果保证字典是数字,您可以在这里使用字典。您提供的JSON包含两个对象,而不是一个。您可以使用JsonConvert.DeserializeObjectjsonString将其解析到字典中。然后,您将拥有一个包含两个条目的字典,其中包含键2和键6。JSON的结构我认为您肯定希望它解析为IEnumerable,特别是因为属性是相同的。为什么要将其作为一个具有重复键的类出现?在一天结束时,您只是创建了一个假装为列表的类。@Liam的可能重复项我不认为这是一个有用的重复项,OP基本上是存在的,但被动态属性名卡住了。@Liam我不同意。不是同一个问题。