zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    线程同步(一)
    java守护线程
    C/C++中如何获取数组的长度?
    java操作xml方式比较与详解(DOM、SAX、JDOM、DOM4J)
    按单词逆序句子(含标点)
    常见误区(一)
    java创建XML及开源DOM4J的使用
    C++学习(一)
    java读XML文件
    MiniProfiler 兼容 Entity Framework 6
  • 原文地址:https://www.cnblogs.com/jhlong/p/9516628.html
Copyright © 2011-2022 走看看