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

JavaのGsonライブラリでMapをJSONに変換する方法をわかりやすく解説

Gsonは、JavaオブジェクトをJSONに変換(シリアライズ)したり、その逆にJSONからJavaオブジェクトへ変換(デシリアライズ)したりできるGoogle製のオープンソースライブラリです。JSON文字列を同等のJavaオブジェクトにマッピングすることも可能です。これらの変換を行うには、Javaプログラムにcom.google.gsonパッケージをインポートする必要があります。

Gsonインスタンスの生成方法

Gsonのインスタンスは、主に以下の2つの方法で作成できます。

  • new Gson() を使って直接インスタンス化する
  • GsonBuilder のインスタンスを作成し、create() メソッドを呼び出して生成する

GsonBuilderを使用すると、整形出力(pretty printing)やnull値の扱いなど、細かいカスタマイズも可能になります。

MapをJSONに変換するサンプルコード

以下のプログラムでは、SortedMap(TreeMap)に格納したデータをGsonを使ってJSON形式の文字列に変換しています。ジェネリクスの型情報を保持するために、TypeTokenを利用している点がポイントです。

import java.lang.reflect.*;
import java.util.*;
import com.google.gson.*;
import com.google.gson.reflect.*;

public class ConvertMapToJsonTest {
    public static void main(String args[]) {
        SortedMap<String, String> data = new TreeMap<String, String>();
        data.put("Raja", "Java");
        data.put("Ravi", "SAP");
        data.put("Surya", "Python");
        data.put("Kiran", "Scala");
        data.put("Vamsi", "Selenium");

        Gson gson = new Gson();
        Type gsonType = new TypeToken<SortedMap<String, String>>(){}.getType();
        String gsonString = gson.toJson(data, gsonType);
        System.out.println(gsonString);
    }
}

実行結果

{"Kiran":"Scala","Raja":"Java","Ravi":"SAP","Surya":"Python","Vamsi":"Selenium"}

TreeMapはキーを自然順序(アルファベット順)でソートするため、出力されるJSONも「Kiran」「Raja」「Ravi」「Surya」「Vamsi」の順になっています。このように、GsonとTypeTokenを組み合わせることで、Map型のコレクションでも型安全にJSONへ変換できます。

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

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

  2. JavaのMapをJSONに変換する3つの方法(Jackson・Gson・org.json)

    JavaのMap(マップ)をJSONに変換する方法はいくつかあります。Javaでは、配列やMapとJSONの相互変換を行う場面が非常に多く、Web APIとのデータ連携などでも欠かせない処理です。 この記事では、代表的なライブラリであるJackson、Gson、org.jsonを使用して、JavaのMapをJSONに変換する3つの具体例をサンプルコード付きで解説します。 Jacksonを使ってJavaのMapをJSONに変換する 最初の例では、Jackson Core と Jackson Databind を使ってJavaのMapをJSONに変換します。 Jacksonライブラリを使用するには