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

Sheeraz Gul 2023年10月12日
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 ]
著者: Sheeraz Gul
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook

関連記事 - Java Object

関連記事 - Java JSON