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

时间:2009-12-01 00:05:02

标签: java xml json

使用Java快速轻松地将XML转换为JSON有哪些好工具?

6 个答案:

答案 0 :(得分:159)

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

Maven依赖:

<dependency>
  <groupId>org.json</groupId>
  <artifactId>json</artifactId>
  <version>20180813</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"
}}

答案 1 :(得分:52)

要将XML文件转换为JSON,请包含以下依赖项

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

你可以Download Jar from Maven Repository here。 然后实现为:

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

答案 2 :(得分:27)

JSON in Java的唯一问题是,如果您的XML只有一个子节点,但它是一个数组,它会将它转换为一个对象而不是一个数组。如果您动态地始终从XML转换为JSON,这可能会导致问题,如果您的示例XML只有一个元素,则返回一个对象,但如果它有2+,则返回一个数组,这会导致使用该数据的人员解析问题JSON。

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

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

答案 3 :(得分:3)

我上传了你可以在eclipse中直接打开并运行的项目 这就是全部 https://github.com/pareshmutha/XMLToJsonConverterUsingJAVA

谢谢

答案 4 :(得分:1)

我不知道您的确切问题是什么,但如果您正在接收XML并希望返回JSON(或其他内容),您还可以查看JAX-B。这是将Java POJO编组/解组为XML和/或Json的标准。有多个库实现JAX-B,例如Apache的CXF。

答案 5 :(得分:1)

我发现这是一种快捷简便的方法: 使用:来自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());
        }