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

JavaでGsonを使ってJSON文字列をツリーモデルとして解析する方法

Gsonライブラリを使用すると、JSON文字列ツリーモデル(Tree Model)として解析(パース)することができます。解析にはJsonParserクラスを利用し、JSON文字列をJsonElement型のツリーモデルへ変換します。

取得したJsonElementオブジェクトに対して、以下のメソッドを呼び出すことで、目的の型として要素を取り出すことが可能です。

  • getAsJsonObject() … 要素を JsonObject として取得する
  • getAsJsonArray() … 要素を JsonArray として取得する

構文

public JsonObject getAsJsonObject()
public JsonArray getAsJsonArray()

実装例

次のコードでは、学生情報を含むJSON文字列をツリーモデルとして解析し、各フィールドの値を取得しています。

import java.util.List;
import com.google.gson.*;

public class JsonTreeModelTest {
   public static void main(String args[]){
      String jsonStr = "{\"name\":\"Adithya\",\"age\":20,\"year of passout\":2005,\"subjects\": [\"MATHEMATICS\",\"PHYSICS\",\"CHEMISTRY\"]}";
      JsonParser jsonParser = new JsonParser();
      JsonElement jsonElement = jsonParser.parse(jsonStr);
      if(jsonElement.isJsonObject()) {
         JsonObject studentObj = jsonElement.getAsJsonObject();
         System.out.println("Student Info:");
         System.out.println("Name is: " + studentObj.get("name"));
         System.out.println("Age is: " + studentObj.get("age"));
         System.out.println("Year of Passout: " + studentObj.get("year of passout"));
         JsonArray jsonArray = studentObj.getAsJsonArray("subjects");
         System.out.println("Subjects:" + jsonArray);
      }
   }
}

// Studentクラス
class Student {
   private String name;
   private int age;
   private int passoutYear;
   private List subjects;

   public Student(String name, int age, int passoutYear, List subjects) {
      this.name = name;
      this.age = age;
      this.passoutYear = passoutYear;
      this.subjects = subjects;
   }

   @Override
   public String toString() {
      return "Student{" +
             "name='" + name + '\'' +
             ", age='" + age + '\'' +
             ", year of passout=" + passoutYear +
             ", subjects=" + subjects +
             '}';
   }
}

出力結果

Student Info:
Name is: "Adithya"
Age is: 20
Year of Passout: 2005
Subjects:["MATHEMATICS","PHYSICS","CHEMISTRY"]

補足:Gsonの新しいバージョンでの注意点

Gson 2.8.6 以降では、上記のように new JsonParser().parse() でインスタンスを生成する方法は非推奨(deprecated)となっています。代わりに、静的メソッドである JsonParser.parseString(jsonStr) を使用することが推奨されているため、最新バージョンを利用する場合はコードを読み替えてください。

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

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

  2. PythonでJSONを解析する方法!json.load()による読み込みとデータ抽出の基本

    PythonでJSONを解析(パース)するにはどうすればよいのでしょうか。基本的な流れはシンプルです。まず json.load() メソッドを使ってJSONファイルを読み込みます。すると、結果はPythonの辞書型として返されるため、あとは通常の辞書操作で各フィールドにアクセスできるようになります。 JSONは軽量なデータ交換フォーマットで、APIレスポンスや設定ファイルなど、さまざまな場面で利用されています。 JSONファイルやJSONレスポンスから情報を取り出すには、まずデータをパースしてPythonで扱える形に変換する必要があります。 PythonでJSONファイルを読み込む この記事で