JSON.NET反序列化存储为属性的JSON对象

时间:2017-08-11 15:51:01

标签: c# json json.net deserialization

我有一条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,则序列化有效,但在我需要再次反序列化InnerMessageMessage类的内容之后:

Envelope envelope = JsonConvert.DeserializeObject<Envelope>(jsonMessage);
Message innerMessage = JsonConvert.DeserializeObject<Envelope>(envelope.InnerMessage);

有一些方法可以将InnerMessage的{​​{1}}属性保持为Envelope并告诉JSON.NET将字符串值自动反序列化吗?

0 个答案:

没有答案