[英]Iterating over a JSON object on the server-side
如果我有这样一个简单的模型:
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])正确反序列化
编辑:我刚从这个问题中发现它实际上不是JSON
而是JavaScript
对象文字表示法,但我仍然希望能够解析我在这里的内容。
edit2:这是peopleJson
的内容: "{\\"items\\":[{\\"id\\":\\"1\\",\\"name\\":\\"j\\",\\"age\\":\\"11\\"}]}"
使用此类进行反序列化
JsonConvert.DeserializeObject<Root>(peopleJson);
public class Root
{
public List<Person> items { get; set; }
}
问题在于items
包装。 它应该是
JsonConvert.DeserializeObject<ListOfPersons>(peopleJson)
哪里
public class ListOfPersons
{
public Person[] Items {get; set;}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.