首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Xml到Json到xml可逆转换json-lib

从Xml到Json到xml可逆转换json-lib
EN

Stack Overflow用户
提问于 2013-12-27 18:58:47
回答 1查看 1.1K关注 0票数 1

我试图使用json进行可逆的xml泛型转换,根据其文档,json完成了Xml和Json之间的转换中描述的转换。根据该文件:

可以将结构化XML元素转换为可逆的JSON结构,如果

  • 所有子元素名称只出现一次,或者
  • 名称相同的子元素按顺序排列。

我尝试了以下代码片段:

代码语言:javascript
复制
String xml ="<z><y>dfsdfs</y><y>sdf</y><x>afdf</x></z>";
System.out.println("Original Xml: " + xml);
XMLSerializer xmlSerializer = new XMLSerializer(); 
xmlSerializer.setForceTopLevelObject(true);
xmlSerializer.setTypeHintsEnabled(false);
JSON json = xmlSerializer.read( xml );  
String jsonString = json.toString(2);   
System.out.println("Converted Json: " + jsonString);
JSON json2 = JSONSerializer.toJSON( jsonString );  
String xml2 = xmlSerializer.write( json2 );  
System.out.println("Converted Xml:" + xml2);  

注意,示例xml确实遵循以下条件。然而,其结果是:

代码语言:javascript
复制
Original Xml: <z><y>dfsdfs</y><y>sdf</y><x>afdf</x></z>

Converted Json: {"z": {
  "y":   [
    "dfsdfs",
    "sdf"
  ],
  "x": "afdf"
}}

Converted Xml:<?xml version="1.0" encoding="UTF-8"?>
<o><z><x>afdf</x><y><e>dfsdfs</e><e>sdf</e></y></z></o>

请注意

  • 元素顺序发生了变化。它似乎在序列化xml时对子元素进行排序。
  • 我们插入了一些额外的o和e元素

为了防止这两个问题,我是否缺少json中的任何设置?

我确实注意到javascript库https://code.google.com/p/x2js/似乎运行良好(尽管存在其他问题),但我正在寻找一个已经在java中可用的库。我想要一个保留xml结构和元素顺序的结构。我的XML文档确实满足了上面关于子元素的两个条件。

EN

回答 1

Stack Overflow用户

发布于 2014-11-05 07:44:28

不确定它现在是否仍然有用,但我可以通过使用另一个库来实现:来自http://www.json.org/的库

代码语言:javascript
复制
import org.json.JSONObject;
import org.json.XML;

String xmlString = "<z><y>dfsdfs</y><y>sdf</y><x>afdf</x></z>";
System.out.println("Initial XML : " + xmlString);
JSONObject jsonObj = (XML.toJSONObject(xmlString));
System.out.println("Converted JSON : " + jsonObj.toString());
System.out.println("Back to converted XML : " + XML.toString(jsonObj));

如果您使用的是maven,那么在您的pom中需要这个:

代码语言:javascript
复制
<dependency>
   <groupId>org.json</groupId>
   <artifactId>json</artifactId>
   <version>20140107</version>
</dependency>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20806254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档