Je pense à quelque chose comme:
String json = new JsonBuilder()
.add("key1", "value1")
.add("key2", "value2")
.add("key3", new JsonBuilder()
.add("innerKey1", "value3"))
.toJson();
Quelle bibliothèque Java JSON est la meilleure pour ce type de construction fluide?
Mise à jour : j'ai enveloppé GSON et j'ai presque obtenu le résultat souhaité ... avec un accroc .
Réponses:
J'utilise la bibliothèque org.json et je l' ai trouvée agréable et conviviale.
Exemple:
PRODUCTION:
la source
Consultez la spécification Java EE 7 Json . C'est le bon chemin:
la source
javax.json
Java 7 et versions ultérieures.javax.json
package unique est celle-ciJ'ai récemment créé une bibliothèque pour créer couramment des objets Gson:
http://jglue.org/fluent-json/
Cela fonctionne comme ceci:
Et grâce à la magie des génériques, il génère des erreurs de compilation si vous essayez d'ajouter un élément à un tableau avec une clé de propriété ou un élément à un objet sans nom de propriété:
Enfin, l'API prend en charge le mappage qui vous permet de mapper les objets de votre domaine vers JSON. Le but étant que lorsque Java8 sera publié, vous pourrez faire quelque chose comme ceci:
la source
Si vous utilisez Jackson pour
JsonNode
construire beaucoup de code, vous pouvez être intéressant dans l'ensemble d'utilitaires suivant. L'avantage de leur utilisation est qu'ils prennent en charge un style de chaînage plus naturel qui montre mieux la structure du JSON en construction.Voici un exemple d'utilisation:
Ce qui équivaut au JSON suivant:
Voici les classes:
Notez que l'implémentation utilise Lombok , mais vous pouvez facilement la désugarer pour remplir le standard Java.
la source
Si vous pensez que la solution ci-dessus est élégante, essayez ma bibliothèque JsonBuilder . Il a été créé pour permettre une manière de construire des structures json pour de nombreux types de bibliothèques Json. Les implémentations actuelles incluent Gson, Jackson et MongoDB. Pour ie. Jackson vient d'échanger:
J'en ajouterai volontiers d'autres sur demande, c'est aussi assez facile à implémenter un par soi-même.
la source
Il semble que vous souhaitiez probablement mettre la main sur json-lib:
http://json-lib.sourceforge.net/
Douglas Crockford est le type qui a inventé JSON; sa bibliothèque Java est ici:
http://www.json.org/java/
On dirait que les gens de json-lib ont repris là où Crockford s'était arrêté. Les deux prennent entièrement en charge JSON, les deux utilisent (compatibles, pour autant que je sache) les constructions JSONObject, JSONArray et JSONFunction.
'J'espère que cela pourra aider ..
la source
L' implémentation de référence comprend une interface fluide. Découvrez JSONWriter et sa sous-classe d'implémentation toString JSONStringer
la source
c'est beaucoup plus facile que vous ne le pensez d'écrire le vôtre, utilisez simplement une interface pour
JsonElementInterface
avec une méthodestring toJson()
, et une classe abstraiteAbstractJsonElement
implémentant cette interface,alors tout ce que vous avez à faire est d'avoir une classe pour
JSONProperty
qui implémente l'interface, etJSONValue
(tout jeton),JSONArray
([...]) etJSONObject
({...}) qui étendent la classe abstraiteJSONObject
a une liste deJSONProperty
'sJSONArray
a une liste deAbstractJsonElement
' svotre fonction add dans chacun devrait prendre une liste de vararg de ce type et retourner
this
maintenant si vous n'aimez pas quelque chose, vous pouvez simplement le modifier
l'avantage de l'interface et de la classe abstraite est de
JSONArray
ne pas accepter de propriétés, maisJSONProperty
peut accepter des objets ou des tableauxla source