[英]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.