错误无法反序列化当前的JSON数组

时间:2017-09-11 07:56:02

标签: c# json

我有一个这样的课程

public class RootObject
{
    public List<Award> award { get; set; }
}
public class Award
{
    public string name { get; set; }
    public string year { get; set; }
}

Json奖

"[{\"name\":\"Student of the month\",\"year\":\"2017-01-01\"},
{\"name\":\"National Hero\",\"year\":\"2017-01-01\"}]"

我像这样反序列化

var awardList = JsonConvert.DeserializeObject<RootObject>(award)
foreach (var item in awardList.award)
{
    Profile.Awards.Add(item);
}

无法将当前JSON数组(例如[1,2,3])反序列化为类型。这段代码有什么问题?

2 个答案:

答案 0 :(得分:1)

根据提供的JSON,您将反序列化为错误的类型。提供的JSON只是根本上的奖项集合。

反序列化... ...

var awardList = JsonConvert.DeserializeObject<Award[]>(award);
foreach (var item in awardList) {
    Profile.Awards.Add(item);
}

JSON必须如下所示才能与提供的原始代码相匹配

{ 
    "award": [
        {"name":"Student of the month","year":"2017-01-01"},
        {"name":"National Hero","year":"2017-01-01"}
    ]
}

答案 1 :(得分:0)

您提到的Json奖励字符串与RootObject类结构不匹配。

RootObject的序列化字符串应该是这样的

{"award":[{"name":"Student of the month","year":"2017"},{"name":"National Hero",

&#34;一年&#34;:&#34; 2017&#34;}]}