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

Posted 海龙的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于xml转换为json格式时,如何将指定节点转换成数组 Json.NET的主要内容,如果未能解决你的问题,请参考以下文章

将单个xml节点作为数组转换为json

如何将 XML 格式转换为 JSON 格式

如何将 XML 属性转换为文本节点

将 XML 转换为 Java 中的 JSON,其中子节点作为数组

当我尝试写入文件时,将 JSON 转换为 XML 错误

json如何转换成xml