2016-08-03 5 views
0

Ich versuche, eine JSON-Zeichenfolge für eine API, die ich schreibe, weiterzugeben. Hier ist, was die JSON Post wie folgt aussieht:Verschachteltes JSON-Array nach C# Klasse

{"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 benutzen, habe ich meine Klassen einrichten als

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

Wenn ich JsonConvert.DeserializeObject<List<EmailAddress>>(email["EmailAddresses"]) verwenden es nicht funktioniert und ich habe List<List<string>> Liste versucht und so her. Was ist der Typ, den ich verwenden sollte, ohne eine Binder-Ausnahme vom Laufzeittyp zu erhalten?

Antwort

3

Wenn das tatsächlich Ihr Code ist, sollten Sie Eigenschaften in EmailTransmission nicht Felder verwenden.

Zweitens muss Ihre Klasse EmailTransmission öffentlich sein.

Schließlich sollten Sie nur das gesamte Objekt deserialisieren, dann ziehen Sie heraus, was Sie danach brauchen.

JsonConvert.DeserializeObject<EmailTransmission>(email); 

Sobald Sie die gesamte JSON-Zeichenfolge deserialisiert haben, können Sie die E-Mail-Adressen abrufen.

+0

Das war es - danke! – Dreamcasting

+0

@Dreamcasting gerne helfen! –

0

Sie bitte Ihre EmailTransmission Klasse ändern als belows

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