jsonを含むStringをHashMapに変換する方法はありますか?すべてのキーはjson-keyで、値はjson-keyの値ですか? jsonにはネストされた値はありません。私はGsonのlibを使用しています。例えばGson to HashMap
、所与JSON:
{
"id":3,
"location":"NewYork"
}
得られたハッシュマップ:
<"id", "3">
<"location", "NewYork">
おかげ
jsonを含むStringをHashMapに変換する方法はありますか?すべてのキーはjson-keyで、値はjson-keyの値ですか? jsonにはネストされた値はありません。私はGsonのlibを使用しています。例えばGson to HashMap
、所与JSON:
{
"id":3,
"location":"NewYork"
}
得られたハッシュマップ:
<"id", "3">
<"location", "NewYork">
おかげ
使用TypeToken
、the GSON FAQの通り:
Gson gson = new Gson();
Type stringStringMap = new TypeToken<Map<String, String>>(){}.getType();
Map<String,String> map = gson.fromJson(json, stringStringMap);
キャスティングなし。不要なオブジェクトの作成はありません。
ありがとう、その作業! –
Typeのインポートは何ですか?それは何十ものオプションを与える。 – ThePixelPony
@ThePixelPony [TypeToken#getType() 'JavaDoc](http://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/com/google/gson/reflect/TypeToken.html)を読んでください。戻り値の型のFQCN。 –
マップを使用してTypeTokenソリューションを使用している場合、 Enum、Object> "duplicate key: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}
私が好き:
private static class MyMap extends HashMap<String,String> {};
...
MyMap map = gson.fromJson(json, MyMap.class);
@MattBallは、新しいユーザーにはかなり非友好的な歓迎です。答えを見ると、それほど明白ではなく、ほとんどシンプルではありません。 'TypeToken'を何に使っているのですか? –
私はあなたが「非常に不愉快な歓迎」を意味するかどうかは分かりません。投稿しましたが、削除されたばかばかしいコメントについては忘れましたか?あなたの質問に答えるには:私はGSONを使用しないので、私は 'TypeToken'を使用しませんが、私は** [Jacksonで同等のものを使用します](http://fasterxml.github.io/jackson-core /javadoc/2.2.0/com/fasterxml/jackson/core/type/TypeReference.html)頻繁にかわいいです。 –
@MattBall何が試されているのか(リンク付きで)質問し、その質問はかなりシンプルだったと言っています。 –