xml转换为json格式时,如何将指定节点转换成数组 Json.NET


使用Json.NET转换xml成json时,如果xml只有单个节点,但json要求是数组形式[], 

JsonConvert.SerializeXmlNode

并不能自动识别

示例如下:

RecordArray要求是数组格式




1
2


  转换后的json不能满足要求

{
  "root": {
    "Record": "
",
    "RecordArray": {
      "a": "1",
      "b": "2"
    }
  }
}

解决办法

查阅资料后发现很简单

xml根节点需要加上 属性

xmlns:json='http://james.newtonking.com/projects/json'

需要转换为数组的节点加上属性
json:Array='true'


如下所示



1
2

  转换后的json可以满足要求了

{
  "root": {
    "Record": "",
    "RecordArray": [
      {
        "a": "1",
        "b": "2"
      }
    ]
  }
}

xml添加属性:

添加属性的时候,可以直接在创建XmlElment的时候,通过XmlElement的SetAttribute来为节点创建属性,或者是创建

     一个XmlAttribute实例:XmlAttribute  xmlArr=XmlDocument.CreateAttribute("属性值"),然后通过XmlNode的

    Attributes.append(XmlArribute)来添加

也可以string字符替换(只适用于没重复节点的xml)

xmlInfo = xmlInfo.Replace(">", "<RecordArray json:Array='true'>");

参考:

https://www.newtonsoft.com/json/help/html/ConvertXmlToJsonForceArray.htm