Existe-t-il un moyen de convertir une chaîne contenant json en HashMap, où chaque clé est une clé json et la valeur est la valeur de la clé json? Le json n'a pas de valeurs imbriquées. J'utilise la lib Gson.
Par exemple, étant donné JSON:
{
"id":3,
"location":"NewYork"
}
hashMap résultant:
<"id", "3">
<"location", "NewYork">
Merci
Utilisez TypeToken
, selon la FAQ GSON :
Gson gson = new Gson();
Type stringStringMap = new TypeToken<Map<String, String>>(){}.getType();
Map<String,String> map = gson.fromJson(json, stringStringMap);
Pas de casting. Aucune création d'objet inutile.
Si j'utilise la solution TypeToken avec une carte <Enum, Object> j'obtiens "clé en double: null".
La meilleure solution pour moi est:
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());
Résultat:
{id=3.0, location=NewYork}
J'aime:
private static class MyMap extends HashMap<String,String> {};
...
MyMap map = gson.fromJson(json, MyMap.class);