填充 JSON 列表到 C# 对象
Populate JSON List To C# Object
我正在尝试将 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);
我遇到了这个异常:
Cannot populate JSON object onto type
我该怎么做?
这是对象的 JSON
表示:
{
"key":"value"
}
这里是对象collection/array/list的表示
[
{
"key":"value"
},
{
"key2":"value2"
}
]
因此您的 JSON
字符串不代表 Person
class 的数组或集合。它用 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);
我正在尝试将 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);
我遇到了这个异常:
Cannot populate JSON object onto type
我该怎么做?
这是对象的 JSON
表示:
{
"key":"value"
}
这里是对象collection/array/list的表示
[
{
"key":"value"
},
{
"key2":"value2"
}
]
因此您的 JSON
字符串不代表 Person
class 的数组或集合。它用 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);