嵌套的JSON数组到C#类

时间:2016-08-03 22:02:22

标签: c# json

我正在尝试为我写的API传递一个JSON字符串。这是JSON帖子的样子:

{"AssociatedApplication":"Postman", "Key":"a274e012c52d4121bda7d1e7a7218cf5", "Subject":"Testing API", "Body":"Testing email API. Muffins.",
"EmailAddresses":[
    {"From":"apihelp@test.com"},
    {"To":"tus@test.com"},
    {"To":"sam.am@test.com"},
    {"Cc":"sam.am2@test.com"},
    {"Bcc":"sam.am3@test.com"}
]
}

使用JSON2Csharp,我将我的类设置为

[NotMapped]
class EmailTransmission
{
    public string AssociatedApplication;
    public string Key;
    public string Subject;
    public string Body;
    public List<EmailAddress> EmailAddresses;
}

[NotMapped]
public class EmailAddress
{
    public string From { get; set; }
    public string To { get; set; }
    public string Cc { get; set; }
    public string Bcc { get; set; }
}

当我使用JsonConvert.DeserializeObject<List<EmailAddress>>(email["EmailAddresses"])时,它无法正常工作,我已尝试过List<List<string>> List等等。如果没有获得运行时类型绑定程序异常,我应该使用什么类型?

2 个答案:

答案 0 :(得分:3)

如果这实际上是您的代码,您应该使用EmailTransmission中的属性,而不是字段。

其次,您的班级EmailTransmission需要公开。

最后,您应该反序列化整个对象,然后提取您需要的内容。

JsonConvert.DeserializeObject<EmailTransmission>(email);

一旦您对整个json字符串进行了反序列化,就可以取消电子邮件地址。

答案 1 :(得分:0)

请更改您的EmailTransmission课程,如下所示

[NotMapped]
class EmailTransmission
{
    public string AssociatedApplication { get; set; }
    public string Key { get; set; }
    public string Subject { get; set; }
    public string Body { get; set; }
    public List<EmailAddress> EmailAddresses { get; set; }
}