反序列化列表c#中的json.net

本文关键字:中的 json net 列表 反序列化 | 更新日期: 2023-09-27 18:06:02

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

我有一个Json字符串,但我无法对其进行反序列化,并在存储列表中获取所有的"Person"。

下面是我正在运行的代码:

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对象(例如{"name":"value"})反序列化为类型System.Collections.Generic.List1[Info3JsonConvertor. info]。Person]',因为类型需要一个JSON数组

有人能解释我怎么能反序列化我的json字符串得到一个列表如果我序列化一个List<Person>到json字符串,我会有同样的问题吗?
我知道这些问题已经有了答案,但是如果有人可以用我的例子来解释我呢?

反序列化列表<T>c#中的json.net

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

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

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

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

开头
public class MyData
{
    public List<string> Columns { set; get; }
    public List<List<string>> Rows { set; get; }
}

var data = JsonConvert.DeserializeObject<MyData>(json);