天天看點

xml轉換為json格式時,如何将指定節點轉換成數組 Json.NET

使用Json.NET轉換xml成json時,如果xml隻有單個節點,但json要求是數組形式[], 

JsonConvert.SerializeXmlNode

并不能自動識别

示例如下:

RecordArray要求是數組格式      
<root>
<Record>
</Record>
<RecordArray>
<a>1</a>
<b>2</b>
</RecordArray>
</root>
      

  轉換後的json不能滿足要求

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

  

解決辦法

查閱資料後發現很簡單

xml根節點需要加上 屬性

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

需要轉換為數組的節點加上屬性

json:Array='true'

如下所示

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

<Record>

</Record>

<RecordArray json:Array='true' >

<a>1</a>

<b>2</b>

</RecordArray>

</root>

  轉換後的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>", "<RecordArray json:Array='true'>");

參考:

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