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

Bea*_*red 163 java xml json

有哪些好的工具可以快速轻松地将XML转换为Java中的JSON?

dan*_*sky 167

Java中的 JSON有一些很棒的资源.

Maven依赖:

<dependency>
  <groupId>org.json</groupId>
  <artifactId>json</artifactId>
  <version>20180813</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

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());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

输出是:

{"test": {
    "attrib": "moretest",
    "content": "Turn this to JSON"
}}
Run Code Online (Sandbox Code Playgroud)

  • 警告:Android中不存在json.org.XML包! (14认同)
  • 如果你有一个`<test attrib ="moretest"content ="foo"> bar </ test>`怎么办? (4认同)
  • @danieltalsky:我需要写什么导入?`import net.sf.json.JSONObject;`或`import org.json.JSONObject;`.我还需要包括哪个罐子? (2认同)
  • 下载所有文件,而不仅仅是XML.java.从这里:https://github.com/douglascrockford/JSON-java/downloads (2认同)

Kri*_*hna 54

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

<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20140107</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

你可以在这里从Maven资源库下载Jar.然后实现为:

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

  • +提供maven依赖 (5认同)
  • 如果您使用的是java 7,则使用帖子中提到的json版本作为最新版本会引发奇怪的错误. (2认同)

Mar*_*cus 28

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

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

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