我有这个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<ItemSummaryModel> models =
JsonConvert.DeserializeObject<List<ItemSummaryModel>>(jsonSummary);
无济于事。如何使用Newtonsoft的JSON库(Json.Net)将此JSON反序列化为这些对象的列表?
答案 0 :(得分:2)
您可以使用
var dict = JsonConvert.DeserializeObject<Dictionary<int, ItemSummary>>(json);
var items = dict.Values.ToList(); //if you want a List<ItemSummary>;
答案 1 :(得分:0)
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<ItemSummaryModel>(json);
这在技术上会让你成为一个复杂的对象,但我不太喜欢它。拥有属性名称的数字将是一个问题。这对于单个复杂对象来说是json也会很棘手。如果它是一个列表,你可以开始编写自己的ContractResolver来处理将数字属性名称映射到id字段,将实际对象映射到你想要的任何属性。