将XML转换为JSON并将XML转换为XML时保留json:Array属性 [英] Keep json:Array attribute when converting XML to JSON to XML

查看:168
本文介绍了将XML转换为JSON并将XML转换为XML时保留json:Array属性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一段看起来像

<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);时,它将忽略名称空间

When I try to serialize it to json string json = JsonConvert.SerializeXmlNode(xml); it ignores namespaces

 {
  "person": {
    "@id": "1",
    "name": "Alan",
    "url": "http://www.google.com",
    "role": [
      "Admin"
    ]
  }
}

,当我反序列化回xml XmlDocument xml = JsonConvert.DeserializeXmlNode(json)时,得到以下信息:

and when I deserialize it back to xml XmlDocument xml = JsonConvert.DeserializeXmlNode(json), I get the following:

<person id='1'>
 <name>Alan</name>
  <url>http://www.google.com</url>
  <role>Admin</role>
</person>

如何保留json:Array属性?

推荐答案

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

There is overload of DeserializeXmlNode which accepts boolean flag named writeArrayAttribute. That's what you need:

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相同.

Which is semantically identical to original xml.

这篇关于将XML转换为JSON并将XML转换为XML时保留json:Array属性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆