Java での JSON から XML への変換

Mohammad Irfan 2023年10月12日
  1. Java の org.json ライブラリを使用して JSON を XML に変換する
  2. Java のアンダースコアライブラリを使用して JSON を XML に変換する
  3. Java の Jackson ライブラリを使用して JSON を XML に変換する
Java での JSON から XML への変換

このチュートリアルでは、Java で JSON を XML に変換する方法を紹介します。

JSON を XML に変換するには、org.json、underscore、Jackson などのいくつかのライブラリを使用できます。この記事では、これらのライブラリの使用方法を学び、JSON から XML への変換プロセスを確認します。

JSON は、アプリケーションがデータ交換に使用するデータ形式です。XML はマークアップ言語であり、データの転送にも使用されるのに対し、軽量でシンプルなため、アプリケーションで使用されます。

Java で JSON を XML に変換するいくつかの例から始めましょう。

Java の org.json ライブラリを使用して JSON を XML に変換する

この例では、JSONObject と XML クラスを提供する org.json ライブラリを使用しました。JSONObject クラスを使用して JSON 文字列を JSON オブジェクトに作成し、XML クラスを使用して JSON を XML に変換しました。

XML クラスは、結果を文字列として返す静的 toString()メソッドを提供します。以下の例を参照してください。

import java.io.IOException;
import org.json.*;
public class SimpleTesting {
  public static void main(String[] args) throws IOException, JSONException {
    String jsonStr = "{student : { age:30, name : Kumar, technology : Java } }";
    JSONObject json = new JSONObject(jsonStr);
    String xml = XML.toString(json);
    System.out.println(xml);
  }
}

出力:

<student>
   <name>Kumar</name>
   <technology>Java</technology>
   <age>30</age>
</student>

Java のアンダースコアライブラリを使用して JSON を XML に変換する

ここでは、underscore ライブラリを使用して JSONXML に変換しました。U クラスと、XML を文字列として返す静的メソッド jsonToXml() を使用しました。以下の例を参照してください。

import com.github.underscore.lodash.U;
import java.io.IOException;
public class SimpleTesting {
  public static void main(String[] args) throws IOException {
    String jsonStr =
        "{\"name\":\"JSON\",\"integer\":1,\"double\":2.0,\"boolean\":true,\"nested\":{\"id\":42},\"array\":[1,2,3]}";
    System.out.println(jsonStr);
    String xml = U.jsonToXml(jsonStr);
    System.out.println(xml);
  }
}

出力:

{"name":"JSON","integer":1,"double":2.0,"boolean":true,"nested":{"id":42},"array":[1,2,3]}
<?xml version="1.0" encoding="UTF-8"?>
<root>
  <name>JSON</name>
  <integer number="true">1</integer>
  <double number="true">2.0</double>
  <boolean boolean="true">true</boolean>
  <nested>
    <id number="true">42</id>
  </nested>
  <array number="true">1</array>
  <array number="true">2</array>
  <array number="true">3</array>
</root>

Java の Jackson ライブラリを使用して JSON を XML に変換する

ここでは、ObjectMapper クラスを使用して JSON を読み取り、次に XmlMapper クラスを使用して XML 形式のデータを取得しました。ここでは、jackson.databindjackson.dataformat の 2つの主要なパッケージを使用しました。1つ目は JSON に関連するクラスを含み、2つ目は XML に関連するクラスを含みます。以下の例を参照してください。

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import com.fasterxml.jackson.dataformat.xml.ser.ToXmlGenerator;
import java.io.IOException;
import java.io.StringWriter;
public class SimpleTesting {
  public static void main(String[] args) throws IOException {
    final String jsonStr =
        "{\"name\":\"JSON\",\"integer\":1,\"double\":2.0,\"boolean\":true,\"nested\":{\"id\":42},\"array\":[1,2,3]}";
    ObjectMapper jsonMapper = new ObjectMapper();
    JsonNode node = jsonMapper.readValue(jsonStr, JsonNode.class);
    XmlMapper xmlMapper = new XmlMapper();
    xmlMapper.configure(SerializationFeature.INDENT_OUTPUT, true);
    xmlMapper.configure(ToXmlGenerator.Feature.WRITE_XML_DECLARATION, true);
    xmlMapper.configure(ToXmlGenerator.Feature.WRITE_XML_1_1, true);
    StringWriter sw = new StringWriter();
    xmlMapper.writeValue(sw, node);
    System.out.println(sw.toString());
  }
}

出力:

{"name":"JSON","integer":1,"double":2.0,"boolean":true,"nested":{"id":42},"array":[1,2,3]}
<?xml version="1.0" encoding="UTF-8"?>
<root>
  <name>JSON</name>
  <integer number="true">1</integer>
  <double number="true">2.0</double>
  <boolean boolean="true">true</boolean>
  <nested>
    <id number="true">42</id>
  </nested>
  <array number="true">1</array>
  <array number="true">2</array>
  <array number="true">3</array>
</root>

関連記事 - Java JSON

関連記事 - Java XML