使用Json.net将JSON数组中的多个项添加到C#中的对象

谁能告诉我如何反序列化包含多个属性的对象?

鉴于下面的场景,代码工作正常。

public ActionResult Index() { string json = @"{""name"": ""Person 2"",""email"": ""example@example.com""}"; var emp = JsonConvert.DeserializeObject(json); Response.Write(emp.name + emp.email); return View(); } public class Person { public string name { get; set; } public string email { get; set; } } 

但是,如果数组包含多个项目,我该怎么做,例如

 string json = @"{""data"": [{""name"": ""Person 1"",""email"": ""test@test.com""},{""name"": ""Person 2"",""email"": ""example@example.com""}]}"; 

提前致谢

下面给出的答案对于我提出的问题是完美的,但现在我已经领先一步了。 任何人都可以告诉我,如果json中有一个数组,我需要做什么,例如添加一个地址?

 { "data": [ { "name": "Person 1", "email": "test@test.com", "address": { "address1": "my address 1", "address2": "my address 2" } }, { "name": "Person 2", "email": "example@example.com", "address": { "address1": "my address 1", "address2": "my address 2" } } ] } 

这样的事情在过去对我有用:

 JObject o = JObject.Parse(json); // This would be the string you defined above // The next line should yield a List<> of Person objects... List list = JsonConvert.DeserializeObject>(o["data"].ToString()); 

您可能希望按如下方式装饰Person对象:

 [JsonObject(MemberSerialization.OptIn)] public class Person { [JsonProperty] public string name{get;set;} [JsonProperty] public string email{get;set;} } 

您可以使用匿名类型。

 var template = new { data = new Person[] { } }; Person[] emps = JsonConvert .DeserializeAnonymousType(json, template) .data; 

反序列化为:

 public class JsonData { public List Data {get;set;} }