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

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

GsonはJava向けの代表的なJSONライブラリで、JSONデータの生成や解析に幅広く利用されています。既存のJSONファイルに新しいJSON文字列を追加するには、いくつかのステップを踏む必要があります。

処理の流れ

基本的な手順は以下のとおりです。

  1. JSONファイルを読み込み、Javaオブジェクトとしてパースします。
  2. JavaオブジェクトをJsonObjectに型キャストし、さらにJsonArrayとして取得します。
  3. JSON配列を反復処理しながら、各JsonElementを出力します。
  4. JsonWriterクラスを使用すると、JSONエンコードされた値を1トークンずつストリームへ書き込めます。
  5. 最後に、新しいJSON文字列を既存のJSONファイルに書き込みます。

サンプルコード

import java.io.*;
import java.util.*;
import com.google.gson.*;
import com.google.gson.stream.*;
import com.google.gson.annotations.*;
public class JSONFilewriteTest {
    public static String nameRead;
    public static void main(String[] args) {
        try {
            JsonParser parser = new JsonParser();
            Object obj = parser.parse(new FileReader("employee1.json"));
            JsonObject jsonObject = (JsonObject) obj;
            System.out.println("employee1.jsonファイルの値:\n" + jsonObject);
            JsonArray msg = (JsonArray)jsonObject.get("emps");
            Iterator<JsonElement> iterator = msg.iterator();
            while(iterator.hasNext()) {
                nameRead = iterator.next().toString();
                System.out.println(nameRead);
            }
            Name name = new Name();
            name.setName("Vamsi");
            Gson gson = new Gson();
            String json = gson.toJson(name);

            FileWriter file = new FileWriter("employee1.json", false);
            JsonWriter jw = new JsonWriter(file);
            iterator = msg.iterator();
            Employees emps = new Employees();
            while(iterator.hasNext()) {
                emps.addEmployee(gson.fromJson(iterator.next().toString(), Name.class));
            }
            emps.addEmployee(name);
            gson.toJson(emps, Employees.class, jw);
            file.close();
            System.out.println("既存のemployee1.jsonファイルへのデータ追加が正常に完了しました");
        } catch(Exception e) {
            e.printStackTrace();
        }
    }
}
// Nameクラス
class Name {
    @Expose
    private String name;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}
// Employeesクラス
class Employees {
    @Expose
    List<Name> emps = new ArrayList<>();
    public List<Name> getEmployees() {
        return emps;
    }
    public void addEmployee(Name name) {
        this.emps.add(name);
    }
}

実行結果

employee1.jsonファイルの値:
{"emps":[{"name":"Adithya"},{"name":"Jai"}]}
{"name":"Adithya"}
{"name":"Jai"}
既存のemployee1.jsonファイルへのデータ追加が正常に完了しました

更新後のemployee1.jsonファイル

上記のコードを実行すると、「Vamsi」という名前の従業員データが既存の配列「emps」の末尾に追加され、ファイル全体が再書き込みされます。実行後のemployee1.jsonファイルは以下のようになります。

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

ポイント解説

  • @Exposeアノテーション:Gsonに対してシリアライズ対象のフィールドを明示的に指定します。デフォルトでは無効化されているため、GsonBuilder().excludeFieldsWithoutExposeAnnotation()を使う場合に有効です。
  • FileWriterの第2引数falseを指定すると上書きモードになります。追記したい場合はtrueを指定しますが、JSON構造を維持するには本例のように全データを読み込んでから一括で書き出す方法が安全です。
  • JsonWriter:ストリーム形式でJSONを書き込めるため、大きなデータを扱う際にもメモリ効率に優れています。
  1. 【Java】JSONオブジェクトをファイルに書き込む方法(json-simpleライブラリの使い方)

    JSON(JavaScript Object Notation)は、現在もっとも広く使われているデータ交換フォーマットのひとつです。軽量であることと、特定のプログラミング言語に依存しないことが大きな特徴で、異なるシステム間でのデータやり取りに最適です。 JavaでJSONファイルを読み書きするには、json-simple ライブラリが便利です。json-simpleは軽量なJSON処理ライブラリで、JSONテキストのエンコード(書き込み)とデコード(読み込み)の両方に対応しており、JSON仕様(RFC4627)に完全準拠しています。 ライブラリの準備 json-simpleを使用するには、まず

  2. JavaでJSONファイルを作成する方法をわかりやすく解説

    JSON(JavaScript Object Notation)は、人間が読みやすい形式でデータを交換するために設計された、軽量なテキストベースのオープン標準フォーマットです。JSONの記法は、C、C++、Java、Python、Perlなど、多くのプログラミング言語に精通したプログラマーにとって馴染み深いものとなっています。 JSONドキュメントのサンプル 以下は、書籍情報を格納した典型的なJSONドキュメントの例です。 { book: [ { id: 01, language: Java, ed