将XML转换为JSON时保留json:Array属性

use*_*18s 9 c# xml json json.net

我有一块看起来像的XML

<person xmlns:json='http://james.newtonking.com/projects/json' id='1'>
   <name>Alan</name>
   <url>http://www.google.com</url>
   <role json:Array='true'>Admin</role>
</person>
Run Code Online (Sandbox Code Playgroud)

当我尝试将其序列化为json时,string json = JsonConvert.SerializeXmlNode(xml);它会忽略名称空间

 {
  "person": {
    "@id": "1",
    "name": "Alan",
    "url": "http://www.google.com",
    "role": [
      "Admin"
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

当我将它反序列化回xml时XmlDocument xml = JsonConvert.DeserializeXmlNode(json),我得到以下内容:

<person id='1'>
 <name>Alan</name>
  <url>http://www.google.com</url>
  <role>Admin</role>
</person>
Run Code Online (Sandbox Code Playgroud)

我该如何保留json:Array属性?

Evk*_*Evk 7

有重载DeserializeXmlNode接受名为的布尔标志writeArrayAttribute.这就是你需要的:

XmlDocument xml = JsonConvert.DeserializeXmlNode(json, null, true);
Run Code Online (Sandbox Code Playgroud)

生产:

<person id="1">
    <name>Alan</name>
    <url>http://www.google.com</url>
    <role xmlns:json="http://james.newtonking.com/projects/json" json:Array="true">Admin</role>
</person>
Run Code Online (Sandbox Code Playgroud)

这在语义上与原始xml相同.