【发布时间】:2017-01-13 06:19:43
【问题描述】:
我正在尝试将下面的 JSON 反序列化为一个列表:
{
character_list: [
{
displayname: "Bob (Server 3)",
name: {
first_lower: "bob",
first: "Bob"
},
id: 123
},
{
displayname: "Bobby (Server 12)",
name: {
first_lower: "bobby",
first: "Bobby"
},
id: 1234
},
{
displayname: "Bobert (Server 9)",
name: {
first_lower: "bobert",
first: "Bobert"
},
id: 12345
},
{
displayname: "Bobostic (Server 1)",
name: {
first_lower: "bobostic",
first: "Bobostic "
},
id: 123456
}
]
}
JSON 存储在一个名为 info 的变量中。我有以下行:
var charList = JsonConvert.DeserializeObject<List<Character>>(info);
但是当我尝试时,我收到以下错误:
无法反序列化当前 JSON 对象(例如 {"name":"value"}) 进入类型“System.Collections.Generic.List” 因为该类型需要一个 JSON 数组(例如 [1,2,3])来反序列化 正确。要修复此错误,请将 JSON 更改为 JSON 数组 (例如 [1,2,3])或更改反序列化类型,使其成为正常的 .NET 类型(例如,不是像整数这样的原始类型,也不是集合 可以从 JSON 反序列化的数组或列表等类型 目的。 JsonObjectAttribute 也可以添加到类型中来强制它 从 JSON 对象反序列化。路径“character_list”,第 1 行, 第 18 位。
我的角色类:
public Character(string json)
{
var jObject = JObject.Parse(json);
var jNow = jObject["character_list"];
Name = (string)jNow.First["name"]["first"];
CharacterId = (int) jNow.First["id"];
DisplayName = (string) jNow.First["displayname"];
}
我已经尝试搜索该网站,我看到的大多数答案都建议使用我已经使用的方法。(即,Question 1、Question 2)
【问题讨论】:
-
它不是一个有效的 JSON。您可以从该站点检查它是否无效以及哪个部分不正确。 jsonlint.com
标签: c# json serialization