我有一段 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>
当我尝试将它序列化为 json string json = JsonConvert.SerializeXmlNode(xml);
它会忽略命名空间
{
"person": {
"@id": "1",
"name": "Alan",
"url": "http://www.google.com",
"role": [
"Admin"
]
}
}
当我将其反序列化回 xml XmlDocument xml = JsonConvert.DeserializeXmlNode(json)
时,我得到以下信息:
<person id='1'>
<name>Alan</name>
<url>http://www.google.com</url>
<role>Admin</role>
</person>
如何保留 json:Array
属性?
最佳答案
有 DeserializeXmlNode
的重载,它接受名为 writeArrayAttribute
的 bool 标志。这就是您所需要的:
XmlDocument xml = JsonConvert.DeserializeXmlNode(json, null, true);
产生:
<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>
这在语义上与原始 xml 相同。
关于c# - 保留 json :Array attribute when converting XML to JSON to XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48763666/