我有一段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
的重载。这就是你需要的:
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完全相同。