JavaのJSON

1. 概要

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

    このガイドは、その選択を容易にし、今すぐにエコシステムについてしっかりと理解できるようにする必要があります。 Javaで最も一般的なJSON処理ライブラリについて説明します。
  • link:#jackson [Jackson]

  • link:#gson [Gson]

  • link:#jsonio [json-io]

  • link:#genson [Genson]

    各ライブラリの単純な構造に従っています-最初にいくつかの有用なリソースを開始します(ここはBaeldungと外部の両方です)。 次に、ライブラリの操作が実際にどのように見えるかを確認するために、*基本的なコード例*を調べます。

*2. 人気と基本統計+

*
最初に、各ライブラリの人気のプロキシとしていくつかの統計から始めましょう。

* 2.1。 ジャクソン*

  • Mavenの使用法:
    data-bind(* 2362 )、https://mvnrepository.com/artifact/com.fasterxml.jackson.core/ jackson-core [core]( 1377 *)

  • Githubスター:* 1457 *

  • Githubフォーク:* 585 *

* 2.2。 Gson *

  • Maven
    使用法:* 1588 *

  • Githubスター:* 2079 *

  • Githubフォーク:* 471 *

* 2.3。 json-io *

  • Maven
    使用法:* 11 *

  • Githubスター:* 129 *

  • Githubフォーク:* 40 *

* 2.4。 ゲンソン*

  • Maven使用法:* 8 *

  • Githubスター:* 67 *

  • Githubフォーク:* 15 *

3. ジャクソン

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

* 3.1。 有用なリソース*

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

  • GithubのJackson

  • Baeldungで:*

  • link:/ jackson [Jacksonチュートリアル]

  • link:/ jackson-serialize-dates [Jackson Date]

  • link:/ jackson-json-view-annotation [Jackson JSON Views]

  • link:/ jackson-annotations [ジャクソン注釈ガイド]

  • link:/ jackson-exception [ジャクソンの例外–問題と解決策]

  • link:/ jackson-field-serializable-deserializable-or-not [Jackson –
    シリアル化/非シリアル化するフィールドを決定する]

  • link:/ jackson-bidirectional-relationships-and-infinite-recursion [ジャクソン
    –双方向の関係]

  • link:/ jackson-custom-serialization [Jackson –カスタムシリアライザー]

  • link:/ jackson-deserialization [Jackson –カスタムデシリアライザー]

    *その他の興味深い記事:*
  • Jackson
    JavaのJSON処理APIの例のチュートリアル

  • Jackson
    – ObjectMapper

  • Jackson
    2 – JavaオブジェクトとJSONの変換

* 3.2。 Mavenの依存関係*

ライブラリを使用するには-_pom.xml_に追加するMaven依存関係を以下に示します。
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>${jackson.version}</version>
</dependency>
https://search.maven.org/classic/#search%7Cgav%7C1%7Cg%3A%22com.fasterxml.jackson.core%22%20AND%20a%3A%22jackson-databind%22 [最新バージョンジャクソンの現在は* 2.6.3 *です。

* 3.3。 Jackson +の簡単な例

*
それでは、簡単な例でJacksonを使用する方法を見てみましょう。
@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は、これから検討する次のJava JSONライブラリです。

* 4.1。 有用なリソース*

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

* 4.2。 Mavenの依存関係*

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>${gson.version}</version>
</dependency>
https://search.maven.org/classic/#search%7Cgav%7C1%7Cg%3A%22com.google.code.gson%22%20AND%20a%3A%22gson%22 [最新バージョン]現在のGsonは* 2.4 *です。

* 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-のhttps://search.maven.org/classic/#search%7Cgav%7C1%7Cg%3A%22com.cedarsoftware%22%20AND%20a%3A%22json-io%22 [最新バージョン] ioは現在* 4.1.9 *です。

* 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>
https://search.maven.org/classic/#search%7Cgav%7C1%7Cg%3A%22com.owlike%22%20AND%20a%3A%22genson%22 [最新バージョン]のGensonは現在* 1.3。*

* 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処理ライブラリについて学びました。