web-dev-qa-db-ja.com

GsonからHashMapへ

すべてのキーがjson-keyであり、値がjson-keyの値であるjsonを含むStringをHashMapに変換する方法はありますか? jsonにはネストされた値はありません。 Gson libを使用しています。

たとえば、与えられたJSON:

{
"id":3,
"location":"NewYork"
}

結果のHashMap:

<"id", "3">
<"location", "NewYork">

ありがとう

50

TypeToken を使用してください GSON FAQ

Gson gson = new Gson();
Type stringStringMap = new TypeToken<Map<String, String>>(){}.getType();
Map<String,String> map = gson.fromJson(json, stringStringMap);

キャストなし。不要なオブジェクトの作成はありません。

112
Matt Ball

TypeTokenソリューションをMap <Enum、Object>で使用すると、「重複キー:null」が返されます。

私にとって最適なソリューションは次のとおりです。

String json = "{\"id\":3,\"location\":\"NewYork\"}";
Gson gson = new Gson();
Map<String, Object> map = new HashMap<String, Object>();
map = (Map<String, Object>)gson.fromJson(json, map.getClass());

結果:

{id=3.0, location=NewYork}
7
alexb83

好き:

private static class MyMap extends HashMap<String,String> {};
...
MyMap map = gson.fromJson(json, MyMap.class);
2
Ricardo Fodra