1. 概要

Gsonライブラリを使用してJavaでJSONを操作する場合、生のJSONをより簡単に操作できる他のクラスまたはデータ構造に変換するためのオプションがいくつかあります。

たとえば、 JSON文字列をマップに変換するまたマッピングを使用してカスタムクラスを作成する 。 ただし、JSONを汎用オブジェクトに変換できると便利な場合があります。

このチュートリアルでは、Gson文字列からJsonObjectを取得する方法を学習します。

2. Mavenの依存関係

まず、gson依存関係をpom.xmlに含める必要があります。

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.5</version>
</dependency>

gson の最新バージョンは、 MavenCentralにあります。

3. JsonParserを使用する

JSON StringJsonObjectに変換するために検討する最初のアプローチは、JsonParserクラスを使用する2段階のプロセスです。

最初のステップでは、元のStringを解析する必要があります。

Gsonは、 JsonParser、というパーサーを提供します。このパーサーは、指定されたJSON StringJsonElementsの解析ツリーに解析します。

public JsonElement parse(String json) throws JsonSyntaxException

StringJsonElementツリーで解析したら、 getAsJsonObject()メソッドを使用して、目的の結果を返します。

最終的なJsonObjectを取得する方法を見てみましょう。

String json = "{ \"name\": \"Baeldung\", \"java\": true }";
JsonObject jsonObject = new JsonParser().parse(json).getAsJsonObject();

Assert.assertTrue(jsonObject.isJsonObject());
Assert.assertTrue(jsonObject.get("name").getAsString().equals("Baeldung"));
Assert.assertTrue(jsonObject.get("java").getAsBoolean() == true);

4. fromJsonを使用する 

2番目のアプローチでは、 Gson インスタンスを作成し、fromJsonメソッドを使用する方法を説明します。 このメソッドは、指定されたJSON Stringを指定されたクラスのオブジェクトに逆シリアル化します。

public <T> T fromJson(String json, Class<T> classOfT) throws JsonSyntaxException

このメソッドを使用してJSONString を解析し、JsonObjectクラスを2番目のパラメーターとして渡す方法を見てみましょう。

String json = "{ \"name\": \"Baeldung\", \"java\": true }";
JsonObject convertedObject = new Gson().fromJson(json, JsonObject.class);

Assert.assertTrue(convertedObject.isJsonObject());
Assert.assertTrue(convertedObject.get("name").getAsString().equals("Baeldung"));
Assert.assertTrue(convertedObject.get("java").getAsBoolean() == true);

5. 結論

この短い記事では、Gsonライブラリを使用してJavaのJSON形式のStringからJsonObjectを取得する2つの異なる方法を学びました。 中間のJSON操作により適したものを使用する必要があります。

いつものように、これらの例のソースコードは、GitHubから入手できます。