2016-08-03 48 views
0

我正在嘗試爲我正在編寫的API傳遞一個JSON字符串。這裏的JSON後的樣子:使用JSON2Csharp將JSON數組嵌套到C#類

{"AssociatedApplication":"Postman", "Key":"a274e012c52d4121bda7d1e7a7218cf5", "Subject":"Testing API", "Body":"Testing email API. Muffins.", 
"EmailAddresses":[ 
    {"From":"[email protected]"}, 
    {"To":"[email protected]"}, 
    {"To":"[email protected]"}, 
    {"Cc":"[email protected]"}, 
    {"Bcc":"[email protected]"} 
] 
} 

,我有我的課設置爲

[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>>列表等向前。我應該使用什麼類型而不會獲得運行時類型聯編程序異常?

回答

3

如果這實際上是您的代碼,您應該使用EmailTransmission中的屬性,而不是字段。

其次,您的類EmailTransmission需要公開。

最後,你應該反序列化整個對象,然後拔出你需要的東西。

JsonConvert.DeserializeObject<EmailTransmission>(email); 

一旦你已經反序列化整個json字符串,你可以取消電子郵件地址。

+0

這就是它 - 感謝! – Dreamcasting

+0

@Dreamcasting樂意幫忙! –

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; } 
}