[Java] Jsonタイプのデータを使う方法(Gsonライブラリ)


Devlopment note / Java    作成日付 : 2020/03/11 00:30:15   修正日付 : 2020/03/11 00:30:15

こんにちは。明月です。


この投稿はJavaでJsonタイプのデータを使う方法に関する説明です。


Jsonデータは「キー:値」になっているデータオブジェクトで人間が読めるテキスト形式の開放型標準フォーマットということです。

JavaでデータオブジェクトをJsonタイプに変換するためにはGoogleで提供するGsonのライブラリを使います。

まず、MavenでGsonを登録してライブラリを連結しましょう。

Reference - https://mvnrepository.com/artifact/com.google.code.gson/gson


maven repositoryに接続してGsonの最新Maven情報を読み込みます。

私はEclipseを利用するのでEclipseのpom.xmlに登録します。



<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
  <groupId>com.google.code.gson</groupId>
  <artifactId>gson</artifactId>
  <version>2.8.6</version>
</dependency>

登録した後、maven updateをしてライブラリを連結します。


そしてテストクラスを作成して試してみましょう。

import com.google.gson.Gson;
import com.google.gson.annotations.SerializedName;
class Example {
  // Jsonタイプに変換するようなクラス
  class JsonExample {
    // jsonキー名に設定する。(もし、このアノテーションが設定なければ変数名がキー名になる。)
    @SerializedName("Data1")
    private int data1;
    // jsonキー名
    @SerializedName("Data2")
    private String data2;
    // data1のgetterプロパティ
    public int getData1() {
      return data1;
    }
    // data1のsetterプロパティ
    public void setData1(int data1) {
      this.data1 = data1;
    }
    // data2のgetterプロパティ
    public String getData2() {
      return data2;
    }
    // data2のsetterプロパティ
    public void setData2(String data2) {
      this.data2 = data2;
    }
  }
  // 実行関数
  public static void main(String[] args) {
    // Jsonタイプのデータ
    String json = "{ \"Data1\": 1, \"Data2\":\"TEST\" }";
    // Jsonタイプのstring値をJsonExmpleタイプに変換
    Gson gson = new Gson();
    // Jsonタイプをクラスに変換する。キー名と変数名やアノテーション(SerializedName)と一致することでデータが格納
    JsonExample obj = gson.fromJson(json, JsonExample.class);
    // 結果は1
    System.out.println(obj.getData1());
    // 結果はTEST
    System.out.println(obj.getData2());
    // data1は「10」に格納
    obj.setData1(10);
    // data2は「Hello world」に格納
    obj.setData2("Hello world");
    // インスタンスデータをjsonタイプに変換する。
    json = gson.toJson(obj);
    // 結果値は {"Data1":10,"Data2":"Hello world"}
    System.out.println(json);
  }
}


以前にシリアライズに関して説明したことがあります。

link - [Java] シリアライズ(直列化: Serializable)


シリアライズとかJsonタイプに変換するのはデータをStringタイプに変換することができることです。

結果は違いますが、仕様によって各良い点があるし悪い点があるでしょう。

シリアライズはクラスのインスタンスをバイナリ化することなので、見えない変数(private)までデータが変換します。でも人間が読みにくいデータ構造に変換します。

Jsonの場合はプロパティがないデータ(getterがない変数)ならjsonタイプに変換することは限界があります。でも人間が読みやすいテキストテキストに変換します。意味はデータ構造の直接に修正ができることです。


プロジェクトの仕様によってシリアライズかJsonタイプかに選択して使いましょう。


ここまでJavaでJsonタイプのデータを使う方法に関する説明でした。


ご不明なところや間違いところがあればコメントしてください。

最新投稿