Ich habe eine JSON-Nachricht zum Deserialisieren mit einer Zeichenfolge-Eigenschaft, die den JSON eines anderen Objekts enthält. Ich habe die folgenden KlassenJSON.NET Deserialize JSON-Objekt als Eigenschaft gespeichert
public class Envelope
{
public string Type { get; set; }
public Message InnerMessage { get; set; }
}
public class Message
{
public string From { get; set; }
public string To { get; set; }
public string Body { get; set; }
}
die JSON Nachricht Ich erhalte in diesem Format ist:
{
Type : "send",
InnerMessage : "{ From: \"sender\", To: \"receiver\", Body: \"test\" }"
}
beachten Sie, dass InnerMessage
die Serialisierung der Message
Klasse enthält, nicht die JSON der Klasse.
Wenn ich den Typ der InnerMessage
-Eigenschaft zu Message
beibehalten, schlägt die Standard-JSON.NET-Deserialisierung fehl.
Wenn ich ändern, um die InnerMessage
zu string
, die Serialisierung funktioniert, aber nachdem ich wieder den Inhalt InnerMessage
zu Message
Klasse deserialisiert müssen:
Envelope envelope = JsonConvert.DeserializeObject<Envelope>(jsonMessage);
Message innerMessage = JsonConvert.DeserializeObject<Envelope>(envelope.InnerMessage);
Es besteht eine gewisse Möglichkeit, die InnerMessage
Eigenschaft Envelope
zu Message
zu halten und JSON.NET anweisen, den zu deserialisierenden String-Wert automatisch zu behandeln?
Wie werden Sie Ihr Objekt Serialisierung? Wenn ich 'JsonConvert.SerializeObject (envelope)' verwende, erhalte ich eine andere Json-Ausgabe als du. –
Ich bekomme die JSON von einem Webservice, ich muss es nur zu den Klassen deserialize –
Gotcha, sieht aus wie @SirRufo hat die Antwort Ihre Suche nach –