Gsonを使用して文字列をJsonObjectに変換する
1. 概要
Gsonライブラリを使用してJavaで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 StringをJsonObjectに変換するために検討する最初のアプローチは、JsonParserクラスを使用する2段階のプロセスです。
最初のステップでは、元のStringを解析する必要があります。
Gsonは、 JsonParser、というパーサーを提供します。このパーサーは、指定されたJSON StringをJsonElementsの解析ツリーに解析します。
public JsonElement parse(String json) throws JsonSyntaxException
StringをJsonElementツリーで解析したら、 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でから入手できます。