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

Rof*_*ers 5 c# json.net deserialization

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

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

public ActionResult Index()
{
    string json = @"{""name"": ""Person 2"",""email"": ""example@example.com""}";

    var emp = JsonConvert.DeserializeObject<Person>(json);
    Response.Write(emp.name + emp.email);
    return View();
}

public class Person
{
    public string name { get; set; }
    public string email { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

但是如果数组包含多个项目,我该怎么办呢?

string json = @"{""data"": [{""name"": ""Person 1"",""email"": ""test@test.com""},{""name"": ""Person 2"",""email"": ""example@example.com""}]}";
Run Code Online (Sandbox Code Playgroud)

提前致谢

下面给出的答案对于我提出的问题是完美的,但现在我已经领先一步了.任何人都可以告诉我如果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" 
            } 
        } 
    ] 
}
Run Code Online (Sandbox Code Playgroud)

小智 5

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

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

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

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