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