Quelle est la meilleure façon de convertir un code JSON comme suit:
{
"data" :
{
"field1" : "value1",
"field2" : "value2"
}
}
dans une Java Map dans laquelle une des clés sont (champ1, champ2) et les valeurs de ces champs sont (valeur1, valeur2).
Des idées? Dois-je utiliser Json-lib pour cela? Ou mieux si j'écris mon propre analyseur?
java
json
parsing
collections
David Santamaria
la source
la source
Réponses:
J'espère que vous plaisantiez sur l'écriture de votre propre analyseur. :-)
Pour un mappage aussi simple, la plupart des outils de http://json.org (section java) fonctionneraient. Pour l'un d'entre eux (Jackson https://github.com/FasterXML/jackson-databind/#5-minute-tutorial-streaming-parser-generator ), vous feriez:
(où JSON_SOURCE est un fichier, un flux d'entrée, un lecteur ou une chaîne de contenu json)
la source
Map<String,Object> result = mapper.readValue(source, Map.class)
.Utilisation de la bibliothèque GSON:
Utilisez le code suivant:
la source
TypeToken<Map<String, Map>>
:-)J'aime la bibliothèque google gson .
Lorsque vous ne connaissez pas la structure de json. Vous pouvez utiliser
et ensuite vous pouvez travailler avec json. par exemple, comment obtenir "value1" de votre gson:
la source
Utilisez la bibliothèque JSON, par exemple http://www.json.org/java/
la source
Mon message pourrait être utile pour d'autres, alors imaginez que vous avez une carte avec un objet spécifique dans les valeurs, quelque chose comme ça:
Pour analyser ce fichier JSON avec la bibliothèque GSON, c'est simple: si votre projet est mavenisé
Ensuite, utilisez cet extrait:
Le POJO correspondant devrait être quelque chose comme ça:
J'espère que ça aide !
la source
De cette façon, cela fonctionne comme une carte ...
la source
JsonMap implements Map<String,Object
pour envelopper JSONObject. alors vous obtenez la véritableMap
interface.Je le fais de cette façon. C'est simple.
la source
la source
La bibliothèque JsonTools est très complète. Il peut être trouvé sur Github .
la source
Avec le Gson 2.7 de Google (probablement des versions antérieures aussi, mais j'ai testé 2.7) c'est aussi simple que:
Ce qui renvoie une Map de type
class com.google.gson.internal.LinkedTreeMap
et travaille récursivement sur les objets imbriqués.la source
Une autre alternative est json-simple qui peut être trouvée dans Maven Central :
L'artefact fait 24 Ko, n'a pas d'autres dépendances d'exécution.
la source
null
reviens d'une simple chaîne JSON où l'une des valeurs est un tableau de chaînes.Si vous utilisez org.json, JSONObject a une méthode
toMap()
. Vous pouvez facilement faire:la source
la source
La bibliothèque Underscore-java peut convertir une chaîne json en carte de hachage. Je suis le mainteneur du projet.
Exemple de code:
la source
Si vous avez besoin de Java pur sans aucune dépendance, vous pouvez utiliser la compilation dans l'API Nashorn de Java 8. Il est obsolète dans Java 11.
Cela fonctionne pour moi:
Exemple d'utilisation
JSON:
Code:
la source
Essayez ce code:
la source
JSON to Map sera toujours un type de données chaîne / objet. j'ai eu la lib GSON de google.
fonctionne très bien et JDK 1.5 est l'exigence minimale.
la source