JavaでのJSON
1. 概要
JavaでのJSONデータの操作は簡単ですが、Javaの他のほとんどの場合と同様に、選択できるオプションとライブラリがたくさんあります。
このガイドは、その選択を容易にし、現在の生態系をしっかりと理解できるようにする必要があります。 Javaで最も一般的なJSON処理ライブラリについて説明します。
ライブラリごとに単純な構造に従っています。最初に、開始するのに役立つリソースをいくつか示します(ここでは、Baeldungと外部の両方で)。 次に、基本的なコード例について説明し、ライブラリの操作が実際にどのように行われるかを確認します。
2. 人気と基本的な統計
まず、各ライブラリの人気の代用としていくつかの統計から始めましょう。
2.1. ジャクソン
2.2. Gson
2.3. json-io
2.4. ゲンソン
3. ジャクソン
次に、これらの中で最も人気のあるジャクソンを見てみましょう。 Jacksonは、JSONデータを処理するための多目的Javaライブラリです。
3.1. 役立つリソース
ライブラリの公式リソースは次のとおりです。
Baeldungについて:
- ジャクソンチュートリアル
- ジャクソンデート
- ジャクソンJSONビュー
- ジャクソン注釈へのガイド
- ジャクソンの例外–問題と解決策
- ジャクソン–どのフィールドをシリアル化/逆シリアル化するかを決定します
- ジャクソン–双方向の関係
- ジャクソン–カスタムシリアライザー
- ジャクソン–カスタムデシリアライザー
その他の興味深い記事:
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>
ご了承ください最新バージョンゲンソンの今は
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処理ライブラリについて学びました。