web-dev-qa-db-ja.com

JavaでXMLをJSONに変換する最も簡単な方法

Javaで素早く簡単にXMLをJSONに変換するための優れたツールは何ですか?

152
BeachRunnerFred

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"
}}
159
danieltalsky

XMLファイルをJSONに変換するには、次の依存関係が必要です。

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

そして、できます ここからMavenリポジトリからJarをダウンロードしてください 。それから次のように実装します。

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

JavaのJSON に関する唯一の問題は、あなたのXMLが単一の子を持っていても配列である場合、それが配列ではなくオブジェクトに変換されることです。 XMLからJSONに動的に変換する場合、これは問題を引き起こす可能性があります。例のXMLに要素が1つしかない場合はオブジェクトを返しますが、2+がある場合は配列を返します。 JSON.

Infoscoopの XML2JSON クラスには、変換を行う前に配列である要素にタグを付ける方法があります。そのため、XMLに子が1つしかない場合でも、配列を正しくマップできます。

これは (少し異なる言語で)使用する方法ですが、XML2JSONリンクのnodelist2json()メソッドから配列がどのように使用されているかも確認できます。

27
Marcus

私はあなたがEclipseで直接開くことができ、それがすべて実行できるプロジェクトをアップロードしました https://github.com/pareshmutha/XMLToJsonConverterUsingJAVA

ありがとうございました

3
pareshm

あなたの正確な問題が何であるかはわかりませんが、XMLを受け取ってJSON(または何か)を返したい場合は、JAX-Bも参照できます。これは、Java POJOをXMLやJsonにマーシャリング/アンマーシャリングするための標準です。 ApacheのCXFなど、JAX-Bを実装するライブラリは複数あります。

1
Martin Sturm

私はこれが早くて簡単な方法だと思った:使用: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());
        }
1
horizon7