山下寛人オフィシャルブログ

オイシックス株式会社 執行役員 システム本部長 山下寛人の公式ブログです。

jsonをMapに変換する

先日mongodbの記事でjsonをMapに変換できないか

と書きましたが、できました。

Jacksonというライブラリを使います。

Jackson

jarファイルが3種類ありますが3つとも必要です。

ObjectMapperのreadValueメソッドを使うと一発です。

コードはこんな具合です。


String json = "{\"name\":{\"first\":\"joe\",\"last\":\"sixpack\"},\"gender\":\"male\",\"verified\":false}";
System.out.println(json);
//LinkedHashMapを使うと順序が保持される

Map result = new ObjectMapper().readValue(json,
LinkedHashMap.class);

System.out.println(result.toString());
for (String key : result.keySet()) {
System.out.println(key);
Object value = result.get(key);
System.out.println(value.getClass());
if (value instanceof LinkedHashMap) {
LinkedHashMap map = (LinkedHashMap)value;
for (Object mapkey : map.keySet()) {
System.out.println(" " + mapkey.getClass());
System.out.println(" " + mapkey);
System.out.println(" " + map.get(mapkey).getClass());
System.out.println(" " + map.get(mapkey));
}
}
}


このときHashMapを使うと順序がばらばらになります。

LinkedHashMapを使うことで順序が保持されました。