我正在尝试为我写的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等等。如果没有获得运行时类型绑定程序异常,我应该使用什么类型?
答案 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; }
}