Works by

Ren's blog

@rennnosuke_rk 技術ブログです

【Java】JacksonでJson文字列をMapオブジェクトに変換する

Jackson

Jacksonについてはこちら。

rennnosukesann.hatenablog.com

JacksonはJavaのライブラリで、JavaオブジェクトをJSON形式にしたり、その逆のこともできます。もちろんJSONファイルへの読み書きも可能です。

JSONをMapオブジェクトに変換する

Jacksonでは、JSON文字列をJavaオブジェクトに変換することができますが、 変換の方法の一つに、JSONのプロパティと同じ名称のプロパティを持つJavaクラスを用意するやり方があります。

public class JSONResponse {
    private String name;
    private String age;
}
// JSON文字列であるjsonをJSONResponse型オブジェクトに変換
JSONResponse response = mapper.readValue(json, JSONResponse.class);

JSONのプロパティがいつも同じであれば問題はないのですが、
例えば異なるAPIのレスポンスを処理する場合などに、レスポンスごとの個別のコンテナクラスを作成する必要があります。

そんなときは、JSONをMapオブジェクトに変換してしまいましょう。
JacksonのTypeReferenceオブジェクトを利用することでJSONからMap型オブジェクトを生成することができます。

TypeReference<HashMap<String, String>> reference = new TypeReference<HashMap<String, String>>() {};
Map<String, String> map = mapper.readValue(json, reference);