Java
 Computer >> コンピューター >  >> プログラミング >> Java

JavaでGSONを使ってJSONオブジェクトのすべてのキーを取得する方法

Gsonは、JavaオブジェクトをJSON形式に変換したり、その逆にJSONをJavaオブジェクトへ変換したりできるGoogleが提供するライブラリです。JSON文字列を対応するJavaオブジェクトに変換することも可能です。JavaプログラムでGsonを利用するには、com.google.gsonパッケージをインポートする必要があります。

JSONオブジェクトが持つすべてのキーを取得したい場合は、JsonObjectクラスのentrySet()メソッドを利用します。このメソッドは、キーと値のペア(Map.Entry<String, JsonElement>)を要素とするSetを返すため、ループ処理で各キーを簡単に取り出せます。

コード例

import java.util.*;
import com.google.gson.*;
import org.json.*;

public class GetJSONAllKeysTest {
   public static void main(String[] args) {
      String jsonStr = "{"Raja":"Java", "Ravi":"SAP", "Chaitanya":"Python", "Adithya":"Spark"}";
      JsonParser parser = new JsonParser();
      JsonElement element = parser.parse(jsonStr);
      JsonObject obj = element.getAsJsonObject();
      Set<Map.Entry<String, JsonElement>> entries = obj.entrySet();
      for(Map.Entry<String, JsonElement> entry : entries) {
         System.out.println(entry.getKey());
      }
   }
}

処理の流れ

  • JsonParserparse()メソッドでJSON文字列を解析し、JsonElementを取得します。
  • getAsJsonObject()を呼び出して、要素をJsonObjectとして扱えるようにします。
  • entrySet()メソッドで、キーと値のペアの集合(Set)を取得します。
  • 拡張for文で各エントリーを走査し、getKey()によってキー名を出力します。

実行結果

Raja
Ravi
Chaitanya
Adithya

なお、Gson 2.8.6以降ではJsonParserのインスタンス化は非推奨となっており、代わりに静的メソッドのJsonParser.parseString(jsonStr)を使用することが推奨されています。新しいプロジェクトではこちらの書き方を採用するとよいでしょう。

  1. JavaでJsonPointerインターフェースを使用してJSONのキーの値を取得する方法

    JSONPointerは、JSONドキュメント内の特定のキーの値へアクセスするための文字列構文を定義した標準規格です。Jsonクラスの静的ファクトリメソッドであるcreatePointer()を呼び出すことで、JSONPointerのインスタンスを生成できます。JSONPointerでは、すべての文字列構文がスラッシュ「/」で始まるのが特徴です。キーの値を取得するには、JSONPointerオブジェクトに対してgetValue()メソッドを呼び出します。 前提条件 この記事のコードを実行するには、Java EE / Jakarta EEに含まれるJSON Processing(JSON-P)の

  2. 【Java入門】Gsonライブラリを使ってJSON文字列をファイルに書き込む方法

    GsonライブラリとはGsonは、JavaオブジェクトをJSON形式に変換(シリアライズ)するためのGoogle製オープンソースライブラリです。逆に、JSON文字列からJavaオブジェクトへの変換(デシリアライズ)も簡単に行えるため、JavaでJSONを扱う際の定番ライブラリとして広く利用されています。Gsonを使用する際の中心的なクラスはGsonクラスです。インスタンスはnew Gson()のように直接生成できますが、設定をカスタマイズしたい場合はGsonBuilderクラスを使ってGsonインスタンスを作成することも可能です。この記事では、Gsonクラスが提供するtoJson()メソッドを