1. 概要

JavaでのJSONデータの操作は簡単ですが、Javaの他のほとんどの場合と同様に、選択できるオプションとライブラリがたくさんあります。

このガイドは、その選択を容易にし、現在の生態系をしっかりと理解できるようにする必要があります。 Javaで最も一般的なJSON処理ライブラリについて説明します。

ライブラリごとに単純な構造に従っています。最初に、開始するのに役立つリソースをいくつか示します(ここでは、Baeldungと外部の両方で)。 次に、基本的なコード例について説明し、ライブラリの操作が実際にどのように行われるかを確認します。

2. 人気と基本的な統計

まず、各ライブラリの人気の代用としていくつかの統計から始めましょう。

2.1. ジャクソン

2.2. Gson

  • Maven 使用法: 1588
  • Github スター: 2079
  • Githubフォーク: 471

2.3. json-io

2.4. ゲンソン

3. ジャクソン

次に、これらの中で最も人気のあるジャクソンを見てみましょう。 Jacksonは、JSONデータを処理するための多目的Javaライブラリです。

3.1. 役立つリソース

ライブラリの公式リソースは次のとおりです。

Baeldungについて:

その他の興味深い記事:

3.2. Mavenの依存関係

ライブラリを使用するには– pom.xmlに追加するMavenの依存関係は次のとおりです。

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>${jackson.version}</version>
</dependency>

現在、ジャクソンの最新バージョン2.13であることに注意してください。

3.3. ジャクソンの簡単な例

それでは、簡単な例でジャクソンの使い方を見てみましょう。

@Test
public void whenSerializeAndDeserializeUsingJackson_thenCorrect() 
  throws IOException{
    Foo foo = new Foo(1,"first");
    ObjectMapper mapper = new ObjectMapper();

    String jsonStr = mapper.writeValueAsString(foo);
    Foo result = mapper.readValue(jsonStr, Foo.class);
    assertEquals(foo.getId(),result.getId());
}

ご了承ください:

  • ObjectMapper.writeValueAsString()は、オブジェクトをJSON文字列にシリアル化するために使用されます。
  • ObjectMapper.readValue()は、JSON文字列をJavaオブジェクトに逆シリアル化するために使用されます。
  • サンプルJSON出力:
{
    "id":1,
    "name":"first"
}

4. Gson

Gsonは、これから検討する次のJavaJSONライブラリです。

4.1. 役立つリソース

ライブラリの公式リソースは次のとおりです。

Baeldungについて:

その他の興味深い記事:

4.2. Mavenの依存関係

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>${gson.version}</version>
</dependency>

現在のGsonの最新バージョン2.8.8であることに注意してください。

4.3. Gsonの簡単な例

Gsonを使用してJSONをシリアル化/非シリアル化する方法を明確にする簡単な例を次に示します。

@Test
public void whenSerializeAndDeserializeUsingGson_thenCorrect(){
    Gson gson = new Gson();
    Foo foo = new Foo(1,"first");

    String jsonStr = gson.toJson(foo);
    Foo result = gson.fromJson(jsonStr, Foo.class);
    assertEquals(foo.getId(),result.getId());
}

ご了承ください:

  • Gson.toJson()は、オブジェクトをJSONにシリアル化するために使用されます
  • Gson.fromJson()は、JSONをJavaオブジェクトに非現実化するために使用されます

5. Json-io

Json-ioは、JSONをシリアル化/逆シリアル化するためのシンプルなJavaライブラリです。

5.1. 役立つリソース

ライブラリの公式リソースは次のとおりです。

5.2. Mavenの依存関係

<dependency>
    <groupId>com.cedarsoftware</groupId>
    <artifactId>json-io</artifactId>
    <version>${json-io.version}</version>
</dependency>

現在のjson-ioの最新バージョン4.13.0であることに注意してください。

5.3. json-ioを使用した簡単な例

それでは、json-ioを使用する簡単な例を見てみましょう。

@Test
public void whenSerializeAndDeserializeUsingJsonio_thenCorrect(){
    Foo foo = new Foo(1,"first");

    String jsonStr = JsonWriter.objectToJson(foo);
    Foo result = (Foo) JsonReader.jsonToJava(jsonStr);
    assertEquals(foo.getId(),result.getId());
}

ご了承ください:

  • JsonWriter.objectToJson()は、オブジェクトをJSONにシリアル化するために使用されます。
  • JsonReader.jsonToJava()は、JsonをJavaオブジェクトに逆シリアル化するために使用されます。
  • サンプルJSON出力:
{
    "@type":"org.baeldung.Foo",
    "id":1,
    "name":"first"
}

6. ゲンソン

GensonはJavaおよびScalaからJSONへの変換ライブラリであり、完全なデータバインディングとストリーミングを提供します。

6.1. 役立つリソース

ライブラリの公式リソースは次のとおりです。

6.2. Mavenの依存関係

<dependency>
    <groupId>com.owlike</groupId>
    <artifactId>genson</artifactId>
    <version>${genson.version}</version>
</dependency>

ご了承ください最新バージョンゲンソンの今は 1.6。

6.3. Gensonの簡単な例

ライブラリを操作する簡単な例を次に示します。

@Test
public void whenSerializeAndDeserializeUsingGenson_thenCorrect(){
    Genson genson = new Genson();
    Foo foo = new Foo(1,"first");

    String jsonStr = genson.serialize(foo);
    Foo result = genson.deserialize(jsonStr, Foo.class);
    assertEquals(foo.getId(),result.getId());
}

ご了承ください:

  • Genson.serialize()は、オブジェクトをJSONにシリアル化するために使用されます
  • Genson.desrialize()は、JSONをJavaオブジェクトに逆シリアル化するために使用されます

7. 結論

この簡単な概要記事では、Javaで最も一般的なJSON処理ライブラリについて学びました。