JsonConvert.SerializeXmlNode()删除与数组同名的子节点

时间:2019-01-29 21:56:06

标签: c# json json.net

我有一个JSON字符串的XML表示形式,其中包含一个数组,并且该数组包含一个与该数组名称相同的子节点。当我调用JsonConvert.SerializeXmlNode()方法将该XML表示形式转换为JSON字符串时,它将删除与数组同名的内部子节点。

例如,我具有以下JSON对象的XML表示形式:

<location xmlns:json="http://james.newtonking.com/projects/json" json:Array="true">
    <location>
        <name>Name of location.location 1</name>
    </location>
</location>

当我使用此XML调用JsonConvert.SerializeXmlNode()时,生成的JSON字符串将删除导致此结果的内部元素:

"location": [
    {
        "name": "Name of location.location 1"
    }
]

但是,我希望得到保留内部元素的JSON字符串:

"location": [
    {
        "location": {
            "name": "Name of location.location 1"
        }
    }
]

以下是一些有关如何重现此问题的示例代码:

XmlDocument doc = new XmlDocument();
doc.LoadXml("<location xmlns:json=\"http://james.newtonking.com/projects/json\" json:Array=\"true\"><location><name> Name of location.location 1</name></location></location>");
string jsonString = JsonConvert.SerializeXmlNode(doc);

是否可以在JSON.NET中更改此行为或以其他方式解决此问题?我无法更改由第三方定义的JSON / XML的结构。

0 个答案:

没有答案