簡體   English   中英

迭代服務器端的JSON對象

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM