我试图将JSON/XML字符串填充到c#对象中。我将XML转换为JSON,然后使用JSON.NET。例子:
JSON字符串
{
"persons":[
{
"age":30,
"name":"david",
"hobbies":[
{
"name":"tennis",
"hours":5
},
{
"name":"football",
"hours":10
}
]
},
{
"name":"adam",
"age":23,
"hobbies":[]
}
]
}
c#类public class Hobbies
{
public string name;
public int hours;
}
class Person
{
public string name;
public int age;
public List<Hobbies> hoobies = new List<Hobbies>();
}
我正在尝试将数据填充到人员列表中:
List<Person> persons = new List<Person>();
JsonConvert.PopulateObject(myJsonText, persons);
我得到了这个异常:
无法将JSON对象填充到类型
我该怎么做呢?
下面是对象的JSON
表示:
{
"key":"value"
}
,这里是Object
的集合/数组/列表的表示[
{
"key":"value"
},
{
"key2":"value2"
}
]
所以你的JSON
字符串不代表Person
类的数组或集合。表示具有Persons
属性的对象,该对象是Person
对象的集合。
要将其解析为List<Person>
,请删除最外层的{
}
然后尝试。
你的JSON应该是这样的
[
{
"age": 30,
"name": "david",
"hobbies": [
{
"name": "tennis",
"hours": 5
},
{
"name": "football",
"hours": 10
}
]
},
{
"name": "adam",
"age": 23,
"hobbies": []
}
]
然后像这样反序列化
var result = JsonConvert.DeserializeObject<List<Person>>(json);
需要一个根对象
public class Root
{
public List<Person> Persons {set;get;}
}
现在可以反序列化
var yourObj = JsonConvert.DeserializeObject<Root>(json);