我有一条JSON消息要使用包含另一个对象的JSON的字符串属性进行反序列化。我有以下课程
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; }
}
我收到的JSON消息采用以下格式:
{
Type : "send",
InnerMessage : "{ From: \"sender\", To: \"receiver\", Body: \"test\" }"
}
请注意InnerMessage
包含Message
类的序列化,而不是类的JSON。
如果我将InnerMessage
属性的类型保留为Message
,则标准JSON.NET反序列化将失败。
如果我将InnerMessage
更改为string
,则序列化有效,但在我需要再次反序列化InnerMessage
到Message
类的内容之后:
Envelope envelope = JsonConvert.DeserializeObject<Envelope>(jsonMessage);
Message innerMessage = JsonConvert.DeserializeObject<Envelope>(envelope.InnerMessage);
有一些方法可以将InnerMessage
的{{1}}属性保持为Envelope
并告诉JSON.NET将字符串值自动反序列化吗?