我试图将下面的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对象(例如{&#34; name&#34;:&#34; value&#34;}) into type&#39; System.Collections.Generic.List` 因为该类型需要一个JSON数组(例如[1,2,3])来反序列化 正确。要修复此错误,请将JSON更改为JSON数组 (例如[1,2,3])或更改反序列化类型以使其正常 .NET类型(例如,不是整数的基本类型,不是集合 类似于数组或List的类型,可以从JSON反序列化 宾语。 JsonObjectAttribute也可以添加到类型中以强制它 从JSON对象反序列化。路径&#39; character_list&#39;,第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)
答案 0 :(得分:0)
您可以安装Newtonsoft JSON,然后您的课程就像
public class Name
{
[JsonProperty("first_lower")]
public string first_lower { get; set; }
[JsonProperty("first")]
public string first { get; set; }
}
public class CharacterList
{
[JsonProperty("displayname")]
public string displayname { get; set; }
[JsonProperty("name")]
public Name name { get; set; }
[JsonProperty("id")]
public int id { get; set; }
}
public class Character
{
[JsonProperty("character_list")]
public List<CharacterList> character_list { get; set; }
}
然后像这样反序列化
string info = File.ReadAllText(YourJSONFile);
var ser = JsonConvert.DeserializeObject<Character>(info);
答案 1 :(得分:0)
info
变量不是具有一个名为character_list
的属性的JSON对象吗?您不应该尝试反序列化info.character_list,这是实际的字符列表,而不是信息。
此解释也符合错误消息。