如果我有这样一个简单的模型:
public class Person
{
public string ID { get; set; }
public string Name { get; set; }
public string Age { get; set; }
}
我有一个JSON
这样的对象:
var people = {
items: [
{ id: "1", name: "j", age: "11"}
]
};
我将它传递给WebMethod
,如下所示:
Project.Web.Services.AJAXService.Save(JSON.stringify(people), function (result) {
//
});
如何在服务器上反序列化,以便我可以使用foreach
进行迭代?
我试过这个:
[WebMethod(true)]
public void Save(string peopleJson)
{
List<Person> people = JsonConvert.DeserializeObject<List<Person>>(peopleJson);
foreach (var person in people)
{
string str = person.Name;
}
}
但它抛出以下Exception
:
无法反序列化当前的JSON对象(例如{“name”:“value”}) 进入类型 'System.Collections.Generic.List`1 [Project.Data.Models.Person]' 因为该类型需要一个JSON数组(例如[1,2,3])来反序列化 正确地
编辑:我刚从this question发现它实际上不是JSON
而是JavaScript
对象字面符号,但我仍然希望成为能解析我在这里的东西。
edit2 :这是peopleJson
的内容:"{\"items\":[{\"id\":\"1\",\"name\":\"j\",\"age\":\"11\"}]}"
答案 0 :(得分:1)
使用此类反序列化
JsonConvert.DeserializeObject<Root>(peopleJson);
public class Root
{
public List<Person> items { get; set; }
}
答案 1 :(得分:1)
问题出在items
包装器中。它应该是
JsonConvert.DeserializeObject<ListOfPersons>(peopleJson)
,其中
public class ListOfPersons
{
public Person[] Items {get; set;}
}