J'ai un message JSON à désérialiser avec une propriété de chaîne contenant le JSON d'un autre objet. Je les classes suivantesJSON.NET désérialise l'objet JSON stocké en tant que propriété
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; }
}
le message que je reçois JSON est dans ce format:
{
Type : "send",
InnerMessage : "{ From: \"sender\", To: \"receiver\", Body: \"test\" }"
}
Notez que InnerMessage
contient la sérialisation de la classe Message
, pas le JSON de la classe.
Si je conserve le type de propriété InnerMessage
à Message
, la désérialisation JSON.NET standard échoue.
Si je change les InnerMessage
à string
, les travaux de sérialisation, mais après que je dois désérialiser à nouveau le contenu de InnerMessage
à Message
classe:
Envelope envelope = JsonConvert.DeserializeObject<Envelope>(jsonMessage);
Message innerMessage = JsonConvert.DeserializeObject<Envelope>(envelope.InnerMessage);
Il y a une certaine façon de garder la propriété InnerMessage
de Envelope
à Message
et dire à JSON.NET de traiter la valeur de chaîne à désérialiser automatiquement?
Comment êtes-vous sérialisation votre objet? Quand j'utilise 'JsonConvert.SerializeObject (enveloppe)', j'obtiens une sortie Json différente de celle que vous avez. –
Je reçois le JSON d'un webservice, j'ai juste besoin de le désérialiser aux classes que j'ai créées –
Gotcha, on dirait que @SirRufo a la réponse à votre recherche –