如何使用JsonConvert反序列化此JSON?

我有这个JSON,我无法弄清楚如何将它转换为C#中的对象列表。

这是JSON:

{ "2": { "sell_average": 239, "buy_average": 238, "overall_average": 240, "id": 2 }, "6": { "sell_average": 184434, "buy_average": 182151, "overall_average": 189000, "id": 6 }, "8": { "sell_average": 11201, "buy_average": 1723, "overall_average": 180, "id": 8 } } 

我试过使用的代码:

 public class ItemSummaryModel { public string Id { get; set; } public ItemSummary ItemSummary { get; set; } } public class ItemSummary { public int Sell_Average { get; set; } public int Buy_Average { get; set; } public int Overall_Average { get; set; } public int Id { get; set; } } List models = JsonConvert.DeserializeObject<List>(jsonSummary); 

无济于事。 如何使用Newtonsoft的JSON库(Json.Net)将此JSON反序列化为这些对象的列表?

您可以使用

 var dict = JsonConvert.DeserializeObject>(json); var items = dict.Values.ToList(); //if you want a List; 
 public class ItemSummaryModel { [JsonProperty(PropertyName = "2")] public ItemSummary Two { get; set; } [JsonProperty(PropertyName = "6")] public ItemSummary Six { get; set; } [JsonProperty(PropertyName = "8")] public ItemSummary Eight { get; set; } } var result = JsonConvert.DeserializeObject(json); 

这在技术上会使你成为一个复杂的对象,但我不太喜欢它。 拥有属性名称的数字将是一个问题。 这对于单个复杂对象来说是json也很棘手。 如果它是一个列表,您可以开始编写自己的ContractResolver来处理将数字属性名称映射到id字段,将实际对象映射到您想要的任何属性。