【发布时间】:2017-08-11 15:51:00
【问题描述】:
我有一条 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);
有什么方法可以将Envelope 的InnerMessage 属性保留为Message,并告诉JSON.NET 将字符串值自动反序列化?
【问题讨论】:
-
你是如何序列化你的对象的?当我使用
JsonConvert.SerializeObject(envelope)时,我得到的 Json 输出与你不同。 -
我从 web 服务获取 JSON,我只需要将其反序列化为我创建的类
-
知道了,看起来@SirRufo 有你想要的答案
标签: c# json json.net deserialization