2016-08-03 6 views
0

Я пытаюсь передать строку JSON для API, который я пишу. Вот то, что JSON пост выглядит следующим образом:Вложенный массив 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]"} 
] 
} 

Используя 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>> список и так вперед. Какой тип я должен использовать, не получая исключение связующего типа во время выполнения?

ответ

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; } 
} 
Смежные вопросы