【发布时间】:2017-08-16 12:36:12
【问题描述】:
我从 web api 获取相同对象的集合。 然后我想将 JSON 反序列化为单个列表
JSON如下:
{
"Liverpool": [
{
"playerId": "LIV01",
"name": "Adam Llana",
"position": "Midfielder"
},
{
"playerId": "LIV02",
"name": "Daniel Sturridge",
"position": "Forward"
}
],
"ManchesterUnited": [
{
"playerId": "MNU01",
"name": "Daley Blind",
"position": "Defender"
},
{
"playerId": "MNU02",
"name": "Romelu Lukaku",
"position": "Forward"
}
],
"Arsenal": [
{
"playerId": "ARS01",
"name": "Petr Cech",
"position": "Goalkeeper"
},
{
"playerId": "ARS02",
"name": "Santi Cazorla",
"position": "Midfielder"
}
]
}
由于我对集合名称不感兴趣,因此我希望能够做到以下几点:
public class Player
{
public string playerId { get; set; }
public string name { get; set; }
public string position { get; set; }
}
List<Player> cards = JsonConvert.DeserializeObject<List<Player>>(jsonContent);
这不起作用并产生错误。
无法反序列化当前 JSON 对象(例如 {\"name\":\"value\"}) 进入类型 'System.Collections.Generic.List`1[Player]' 因为类型 需要一个 JSON 数组(例如 [1,2,3])才能正确反序列化。修理 此错误将 JSON 更改为 JSON 数组(例如 [1,2,3])或 更改反序列化类型,使其成为普通的 .NET 类型(例如 不是像整数这样的原始类型,不是像数组这样的集合类型 或列表)可以从 JSON 对象反序列化。 JsonObjectAttribute 也可以添加到类型中以强制它 从 JSON 对象反序列化。
有没有什么方法可以使用 Newtonsoft.Json 来实现这一点?
【问题讨论】:
标签: c# json deserialization