JSON.Net反序列化包含xml的对象

时间:2014-08-18 19:00:23

标签: c# xml json serialization json.net

我有一个带有特定字段的JSON对象,其值始终为XML,如下所示:

{
    ...
    "XmlValue": "<tag1><etc></etc></tag1>"
    ...
}

我使用JSON.Net作为解串器。我想将这个反序列化为这样的类:

public class ObjectContainingXml
{
    ...
    public XElement XmlValue { get;set; }
    ...
}

当我尝试使用JsonConvert.DeserializeObject<ObjectContainingXml>(input)时,我会收到此异常:XmlNodeConverter can only convert JSON that begins with an object.

有没有办法让这个本机在JSON.Net中工作而不将该字段作为字符串处理,然后手动将字段解析为XML?

1 个答案:

答案 0 :(得分:1)

目前没有内置方法可以使用JSON.Net执行这种反序列化。

背景:

XmlNodeConverter用于将XML序列化为JSON。例如,像

这样的节点
<root><p>Text1<span>Span1</span> <span>Span2</span> Text2</p></root>

将被序列化为

{"root":{"p":{"#text":["Text1"," Text2"],"span":["Span1","Span2"]}}}

如果您需要将XML序列化为字符串并返回,则需要实现自定义JsonConverter