我是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字符串,我会有同样的问题吗?
我知道这些问题已经有了答案,但是如果有人可以用我的例子来解释我呢?
反序列化器从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);