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

JavaでGsonを使ってJSON文字列にプロパティを追加・挿入する方法

はじめに

com.google.gson.JsonElement クラスは、JSONを構成する1つの要素を表すクラスです。Gsonクラスが提供する toJsonTree() メソッドを使うと、オブジェクトをJsonElementのツリー構造としてシリアライズできます。このツリーに対して getAsJsonObject() メソッドを呼び出せば、要素を JsonObject として取得でき、そこへ自由にプロパティを追加・挿入することが可能です。

getAsJsonObject() メソッドの構文

public JsonObject getAsJsonObject()

このメソッドは、JsonElementをJsonObjectとして返します。戻り値のJsonObjectに対して addProperty() メソッドを呼び出すことで、キーと値のペアを簡単に追加できます。addProperty()はString型だけでなく、Number型やBoolean型なども値として受け付けます。

実装例

以下は、StudentオブジェクトをJSONに変換した後、「id」という追加のプロパティを挿入するサンプルコードです。

import com.google.gson.*;
public class AddPropertyGsonTest {
   public static void main(String[] args) {
      Gson gson = new GsonBuilder().setPrettyPrinting().create(); // 整形されたJSONを出力
      Student student = new Student("Adithya");
      String jsonStr = gson.toJson(student, Student.class);
      System.out.println("JSON文字列: \n" + jsonStr);
      JsonElement jsonElement = gson.toJsonTree(student);
      jsonElement.getAsJsonObject().addProperty("id", "115");
      jsonStr = gson.toJson(jsonElement);
      System.out.println("追加のプロパティ挿入後のJSON文字列: \n" + jsonStr);
   }
}
// Studentクラス
class Student {
   private String name;
   public Student(String name) {
      this.name= name;
   }
   public String getName() {
      return name;
   }
   public void setName(String name) {
      this.name = name;
   }
}

実行結果

JSON文字列:
{
   "name": "Adithya"
}
追加のプロパティ挿入後のJSON文字列:
{
   "name": "Adithya",
   "id": "115"
}

処理の流れのポイント

この手法のポイントは以下の3ステップです。

1. toJsonTree() でオブジェクトをJsonElementのツリーに変換する
2. getAsJsonObject() でJsonObjectを取得し、addProperty() で新しいプロパティを追加する
3. toJson() で再びJSON文字列にシリアライズする

また、GsonBuilder().setPrettyPrinting().create() を使用することで、インデント付きの見やすい整形済みJSONを出力できる点にも注目してください。デバッグ時やログ出力時に非常に便利です。

  1. Javaで既存のJSONファイルにJSON文字列を追加する方法【Gson活用ガイド】

    GsonはJava向けの代表的なJSONライブラリで、JSONデータの生成や解析に幅広く利用されています。既存のJSONファイルに新しいJSON文字列を追加するには、いくつかのステップを踏む必要があります。 処理の流れ 基本的な手順は以下のとおりです。 JSONファイルを読み込み、Javaオブジェクトとしてパースします。 JavaオブジェクトをJsonObjectに型キャストし、さらにJsonArrayとして取得します。 JSON配列を反復処理しながら、各JsonElementを出力します。 JsonWriterクラスを使用すると、JSONエンコードされた値を1トークンずつストリームへ書き込

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

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