码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-08-22 12:05:34      阅读:415      评论:0      收藏:0      [点我收藏+]

标签:roo   new   creat   ORC   com   vertx   自动识别   ack   font   

使用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.add(XmlArribute)来添加

 

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

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

 

参考:https://q.cnblogs.com/q/41823/

https://stackoverflow.com/questions/21382879/xml-to-json-using-newtonsoft-issue-when-loop-over-array-of-one-element/21383423#21383423

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

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

标签:roo   new   creat   ORC   com   vertx   自动识别   ack   font   

原文地址:https://www.cnblogs.com/jhlong/p/9516628.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!