HOWTO · Java

Java でオブジェクトを JSON にシリアライズする

このチュートリアルでは、Java でオブジェクトを JSON にシリアル化する方法を示します。

このページの内容

このチュートリアルでは、Java-JSON および Jackson API を使用して Java でオブジェクトを JSON にシリアル化する方法を示します。

Java でオブジェクトを JSON にシリアライズする

JSON操作に使用されるさまざまなライブラリが提供されています。 これらのライブラリーは、Java プログラミングを使用して Java オブジェクトを JSON にシリアライズすることもできます。

Java-JSON API を使用して Java オブジェクトを JSON にシリアライズする

Java は組み込みモードで JSON をサポートしていないため、Java-JSON は Java で JSON 操作を実行するためのサードパーティ API です。 このライブラリは、Java オブジェクトを JSON にシリアル化できます。

Java-JSON にはさまざまな機能があり、多くの同様のライブラリよりも優れています。 主な機能は次のとおりです。

  • 下位互換性。
  • 一貫した信頼できる結果。
  • 実行速度が速く、メモリ使用量が少ない。
  • 外部依存関係はありません。
  • JSON 仕様への準拠を提供します。

この API を使用する前に、ビルド パスに追加する必要があります。 Gradle プロジェクトの依存関係を使用して簡単に実行できます。

implementation 'org.json:json:20210307'

こちら からこの API の jar ファイルをダウンロードして、プロジェクトのビルド パスに追加することで、一般的な Java プロジェクトに追加することもできます。

Java-JSON は、Java データを JSON オブジェクトにシリアル化するために使用できるクラス JSONWriter を提供します。 例を試してみましょう:

package delftstack;

import java.io.StringWriter;
import java.io.Writer;
import org.json.JSONException;
import org.json.JSONWriter;

public class Example {
  public static void main(String[] args) throws JSONException {
    Writer DemoUser = new StringWriter();

    var JSON_Writer = new JSONWriter(DemoUser);

    JSON_Writer.object();
    JSON_Writer.key("Name").value("Sheeraz");
    JSON_Writer.key("Occupation").value("Software Engineer");
    JSON_Writer.key("Age").value(28);
    JSON_Writer.key("Married").value(false);

    JSON_Writer.key("Skills");
    JSON_Writer.array();
    JSON_Writer.value("Java");
    JSON_Writer.value("Python");
    JSON_Writer.value("PHP");
    JSON_Writer.value("Matlab");
    JSON_Writer.value("R");
    JSON_Writer.endArray();

    JSON_Writer.endObject();

    System.out.println(DemoUser);
  }
}

上記のコードは、API の JSONWriter クラスを使用してデータを JSON オブジェクトにシリアル化します。 出力を参照してください:

{"Name":"Sheeraz","Occupation":"Software Engineer","Age":28,"Married":false,"Skills":["Java","Python","PHP","Matlab","R"]}

Jackson API を使用して Java オブジェクトを JSON にシリアライズする

Jackson は、Java での JSON 操作用のオープンソース ライブラリです。 このライブラリは、Java で JSON オブジェクトをシリアライズおよびデシリアライズできます。

このライブラリには、Java オブジェクトを JSON オブジェクトにシリアライズするために使用される writeValue(...) メソッドがあります。 この API は、maven の依存関係として追加できます。

<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-mapper-asl</artifactId>
    <version>1.9.13</version>
</dependency>

もう 1つの方法は、Jackson API の jars を一般的なプロジェクト ビルド パスに追加することです。 以下のリンクから jars をダウンロードします。

  1. ジャクソンデータバインド
  2. ジャクソンコア

API がビルド パスに追加されたら、Java オブジェクトを JSON にシリアル化する例を試すことができます。

package delftstack;

import com.fasterxml.jackson.core.JsonGenerationException;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.File;
import java.io.IOException;

public class Example {
  public static void main(String args[]) {
    Example JSON_Tester = new Example();
    try {
      Employee Employee1 = new Employee();
      Employee1.setAge(28);
      Employee1.setName("Sheeraz");
      JSON_Tester.writeJSON(Employee1);

      Employee Employee2 = JSON_Tester.readJSON();
      System.out.println(Employee2);

    } catch (JsonParseException e) {
      e.printStackTrace();
    } catch (JsonMappingException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }

  private void writeJSON(Employee employee)
      throws JsonGenerationException, JsonMappingException, IOException {
    ObjectMapper Object_Mapper = new ObjectMapper();
    Object_Mapper.writeValue(new File("employee.json"), employee);
  }

  private Employee readJSON() throws JsonParseException, JsonMappingException, IOException {
    ObjectMapper Object_Mapper = new ObjectMapper();
    Employee employee = Object_Mapper.readValue(new File("employee.json"), Employee.class);
    return employee;
  }
}

class Employee {
  private String Employee_Name;
  private int Employee_Age;
  public Employee() {}
  public String getName() {
    return Employee_Name;
  }
  public void setName(String Employee_Name) {
    this.Employee_Name = Employee_Name;
  }
  public int getAge() {
    return Employee_Age;
  }
  public void setAge(int Employee_Age) {
    this.Employee_Age = Employee_Age;
  }
  public String toString() {
      return "Employee [Employee Name: "+Employee_Name+",
      Employee Age: "+Employee_Age+ " ]";
  }
}

上記のコードは、データを Java クラスから JSON に変換します。 出力を参照してください:

Employee [Employee Name: Sheeraz, Employee Age: 28 ]