在Java中将XML转换为JSON的最快方法

在Java中快速简单地将XML转换为JSON有什么好的工具?

Java中的JSON有一些很好的资源。

Maven依赖:

 <dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20160807</version> </dependency> 

XML.java是你正在寻找的类:

 import org.json.JSONObject; import org.json.XML; public class Main { public static int PRETTY_PRINT_INDENT_FACTOR = 4; public static String TEST_XML_STRING = "<?xml version=\"1.0\" ?><test attrib=\"moretest\">Turn this to JSON</test>"; public static void main(String[] args) { try { JSONObject xmlJSONObj = XML.toJSONObject(TEST_XML_STRING); String jsonPrettyPrintString = xmlJSONObj.toString(PRETTY_PRINT_INDENT_FACTOR); System.out.println(jsonPrettyPrintString); } catch (JSONException je) { System.out.println(je.toString()); } } } 

输出是:

 {"test": { "attrib": "moretest", "content": "Turn this to JSON" }} 

将XML文件转换为JSON包括以下依赖项

 <dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20140107</version> </dependency> 

你可以从Maven Repository下载Jar 。 然后执行如下:

 String soapmessageString = "<xml>yourStringURLorFILE</xml>"; JSONObject soapDatainJsonObject = XML.toJSONObject(soapmessageString); System.out.println(soapDatainJsonObject); 

Java中唯一的JSON问题是,如果你的XML只有一个子元素,但是是一个数组,它将把它转换成一个对象而不是一个数组。 如果您dynamic地总是从XML转换为JSON,那么这可能会导致问题,如果您的示例XML只有一个元素,则返回一个对象,但如果它有2+,则返回一个数组,从而导致使用JSON。

Infoscoop的XML2JSON类有一种在转换之前标记数组元素的方法,这样即使XML中只有一个子元素,数组也可以正确映射。

下面是一个使用它的例子 (使用稍微不同的语言,但是您也可以从XML2JSON链接的nodelist2json()方法中看到如何使用数组)。

我已经上传了你可以直接在eclipse中打开的项目,运行这些都是https://github.com/pareshmutha/XMLToJsonConverterUsingJAVA

谢谢

我不知道你确切的问题是什么,但是如果你正在接收XML并且想要返回JSon(或者其他),那么你也可以看一下JAX-B。 这是将Java POJO编组/解组到Java和/或Json的标准。 有多个实现JAX-B的库,例如Apache的CXF。

我发现这个快速而简单的方法:使用:java-json.jar中的org.json.XML类

  if (statusCode == 200 && inputStream != null) { BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8")); StringBuilder responseStrBuilder = new StringBuilder(); String inputStr; while ((inputStr = bufferedReader.readLine()) != null) { responseStrBuilder.append(inputStr); } jsonObject = XML.toJSONObject(responseStrBuilder.toString()); }