226 votes

Json à la carte

Quel est le meilleur moyen de convertir un code JSON comme ceci:

 { "data" : { "field1" : "value1", "field2" : "value2"}}
 

dans une carte Java dans laquelle les clés sont (champ1, champ2) et les valeurs de ces champs sont (valeur1, valeur2).

Des idées? Devrais-je utiliser Json-lib pour ça? Ou mieux si j'écris mon propre analyseur? Merci d'avance.

402voto

StaxMan Points 34626

J'espère que vous plaisantez à propos de l'écriture de votre propre analyseur. :-)

Pour une cartographie aussi simple, la plupart des outils de http://json.org (section java) fonctionneraient. Pour l'un d'entre eux (Jackson, http://wiki.fasterxml.com/JacksonInFiveMinutes ), vous feriez:

 HashMap<String,Object> result =
        new ObjectMapper().readValue(JSON_SOURCE, HashMap.class);
 

(où JSON_SOURCE est un fichier, un flux d'entrée, un lecteur ou une chaîne de contenu json)

46voto

David L Points 51

Utilisez le code suivant:

 Type mapType = new TypeToken<Map<String, Map>>(){}.getType();  
Map<String, String[]> son = new Gson().fromJson(easyString, mapType);
 

Utilisez les bibliothèques com.google.gson.Gson, com.google.common.reflect.TypeToken et java.lang.reclect.Type;

36voto

bugs_ Points 1407

J'aime la bibliothèque google gson .
Lorsque vous ne connaissez pas la structure de JSON. Vous pouvez utiliser

 JsonElement root = new JsonParser().parse(jsonString);
 

et alors vous pouvez travailler avec JSON. Par exemple, comment obtenir "valeur1" de votre gson:

 String value1 = root.getAsJsonObject().get("data").getAsJsonObject().get("field1").getAsString();
 

22voto

Steve McLeod Points 19016

J'ai eu du succès avec les outils ici: http://www.json.org/java/

18voto

j.d. Points 121

Utilisez JSON lib Eg http://www.json.org/java/

 // Assume you have a Map<String, String> in JSONObject jdata
@SuppressWarnings("unchecked")
Iterator<String> nameItr = jdata.keys();
Map<String, String> outMap = new HashMap<String, String>();
while(nameItr.hasNext()) {
    outMap.put(nameItr.next(), jdata.getString(name));

}
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X