【发布时间】:2014-01-24 07:20:45
【问题描述】:
如果我有一个像这样的简单模型:
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\"}]}"
【问题讨论】:
-
a) 你两次声明
people。 b)string people的内容是什么? -
谢谢,我编辑修复了这个问题。我将再次编辑以显示字符串内容
-
你在使用 wcf 吗?如果是这样,签名 public void Save(List
people) 应该可以工作。 -
不只是 ASMX。这就是我所需要的,纯粹是为了 AJAX
-
@user982119
peopleJson的内容是什么?
标签: c# javascript json serialization json.net