在C#中反序列化List <t> json.net

时间:2015-08-03 14:17:36

标签: c# serialization json.net

我是Json.NET的新用户。我创建了一个类型:Person,它具有不同的属性:firstName,lastName,age等。

我有一个Json字符串,但我无法将其反序列化并获得所有&#34; Person&#34;在存储列表中。

这是我正在运行的代码:

List <Person> persons = JsonConvert.DeserializeObject<List<Person>>(strPersons);` 

strPersons是我的json字符串。就像那样:

string strPersons = @"{
    'Columns':['FirstName','LastName','Hobbies','Age','Country','Address','Phone','Gender'],
    'Rows':[ 
       ['X', 'Y', 'Cuisine', '35', 'France', 'unknown', 'unknown', 'male'],      
       ['W', 'Z', 'Danser', '43', 'France', 'unknown', 'unknown', 'male'],
        ...]

编译时出错:

  

附加信息:无法将当前JSON对象(例如{&#34; name&#34;:&#34; value&#34;})反序列化为类型System.Collections.Generic.List1 [Info3JsonConvertor.Person]&# 39;因为类型需要JSON数组

有人可以解释我如何反序列化我的json字符串以获取列表 如果我将List<Person>序列化为json字符串,我会遇到同样的问题吗? 我知道这些问题已经得到解答,但是如果有人可以用我的例子解释我的话?

2 个答案:

答案 0 :(得分:1)

反序列化程序从您的JSON识别的对象看起来像这样:

public class RootObject
{
    public List<string> Columns { get; set; }
    public List<List<string>> Rows { get; set; }
}

你可以看到它不是List,而只是Person

答案 1 :(得分:0)

您的根元素是一个对象而不是列表或数组({....})。 Json数组以[

开头
public class MyData
{
    public List<string> Columns { set; get; }
    public List<List<string>> Rows { set; get; }
}
var data = JsonConvert.DeserializeObject<MyData>(json);