J'ai besoin de créer une chaîne JSON, quelque chose comme ceci:
[
{ 'id': 1, 'name': 'John'},
{ 'id': 2, 'name': 'Dani'}
]
val jArray = JsArray();
jArray += (("id", "1"), ("name", "John"))
jArray += (("id", "2"), ("name", "Dani"))
println(jArray.dump)
Je dois pouvoir ajouter des lignes au jArray
, quelque chose commejArray += ...
Quelle est la bibliothèque / solution la plus proche de cela?
Réponses:
Malheureusement, l'écriture d'une bibliothèque JSON est la version de la communauté Scala de codage d'une application de liste de tâches.
Il existe une grande variété d'alternatives. Je les énumère sans ordre particulier, avec des notes:
💣 = n'a pas corrigé les vulnérabilités de sécurité, § = a l'intégration Scalaz, ± = prend en charge l'interopérabilité avec Jackson
JsonNode
Dans Snowplow, nous utilisons json4s avec le back-end Jackson; nous avons également eu de bonnes expériences avec Argonaut.
la source
Lift-json est à la version 2.6 et il fonctionne très bien (et est également très bien supporté, le responsable est toujours prêt à corriger tous les bogues que les utilisateurs peuvent trouver. Vous pouvez trouver des exemples de son utilisation sur le référentiel github
Le responsable (Joni Freeman) est toujours joignable sur la liste de diffusion Lift . Il y a également d'autres utilisateurs sur la liste de diffusion qui sont également très utiles.
Comme le souligne @Alexey, si vous souhaitez utiliser la bibliothèque avec une autre version de Scala, dites
2.11.x
, modifiezscalaVersion
et utilisez%%
comme suit:Vous pouvez consulter le site liftweb.net pour connaître la dernière version au fil du temps.
la source
Je suggère d'utiliser jerkson , il prend en charge la plupart des conversions de type de base:
la source
Le numéro 7 sur la liste est Jackson, n'utilisant pas Jerkson. Il prend en charge les objets Scala (classes de cas, etc.).
Voici un exemple de la façon dont je l'utilise.
Cela rend les choses très simples. De plus, XmlSerializer et la prise en charge des annotations JAXB sont très pratiques.
Cet article de blog décrit son utilisation avec les annotations JAXB et Play Framework.
http://krasserm.blogspot.co.uk/2012/02/using-jaxb-for-xml-and-json-apis-in.html
Voici mon JacksonMapper actuel.
la source
Peut-être que j'ai un peu de retard, mais vous devriez vraiment essayer d'utiliser la bibliothèque json à partir du framework play. Vous pouvez consulter la documentation . Dans la version 2.1.1 actuelle, vous ne pouviez pas l'utiliser séparément sans jeu complet 2, donc la dépendance ressemblera à ceci:
Il vous apportera tout le cadre de jeu avec tout ce qui est à bord.
Mais comme je le sais, les gars de Typesafe ont un plan pour le séparer dans la version 2.2. Donc, il existe un play-json autonome de 2.2-snapshot.
la source
Vous devriez vérifier Genson . Cela fonctionne et est beaucoup plus facile à utiliser que la plupart des alternatives existantes dans Scala. Il est rapide, possède de nombreuses fonctionnalités et intégrations avec d'autres bibliothèques (jodatime, json4s DOM api ...).
Tout cela sans aucun code inutile de fantaisie comme des implicits, des lecteurs / écrivains personnalisés pour les cas de base, une API illisible en raison de la surcharge des opérateurs ...
Son utilisation est aussi simple que:
Disclaimer: Je suis l'auteur de Gensons, mais cela ne veut pas dire que je ne suis pas objectif :)
la source
Voici une implémentation de base de l'écriture puis de la lecture de
json
fichiers en utilisantjson4s
.la source
Jawn est une bibliothèque d'analyseurs JSON très flexible dans Scala. Il permet également de générer des AST personnalisés; il vous suffit de lui fournir un petit trait pour correspondre à l'AST.
A très bien fonctionné pour un projet récent qui nécessitait un peu d'analyse JSON.
la source
Rapture semble manquer dans la liste des réponses. Il peut être obtenu sur http://rapture.io/ et vous permet (entre autres) de:
Je ne veux pas copier / coller des exemples de Rapture à partir de sa page. Une belle présentation des fonctionnalités de Rapture a été donnée par Jon Pretty au SBTB 2014: https://www.youtube.com/watch?v=ka5-OLJgybI
la source
@ Réponse n ° 7 d'AlaxDean, Argonaut est le seul que j'ai pu utiliser rapidement avec sbt et intellij. En fait, json4s a également pris peu de temps, mais traiter avec un AST brut n'est pas ce que je voulais. J'ai fait travailler Argonaut en insérant une seule ligne dans mon build.st:
libraryDependencies += "io.argonaut" %% "argonaut" % "6.0.1"
Et puis un simple test pour voir si je pourrais obtenir JSON:
Puis
Assurez-vous que vous êtes familier avec Option qui est juste une valeur qui peut également être nulle (null safe je suppose). Argonaut utilise Scalaz donc si vous voyez quelque chose que vous ne comprenez pas comme le symbole
\/
(une opération ou), c'est probablement Scalaz.la source
Vous pouvez essayer ceci: https://github.com/momodi/Json4Scala
C'est simple et ne contient qu'un seul fichier scala avec moins de 300 lignes de code.
Il existe des échantillons:
la source
J'utilise uPickle qui a le gros avantage de gérer automatiquement les classes de cas imbriquées:
Ajoutez ceci à votre
build.sbt
pour utiliser uPickle:la source
J'utilise la bibliothèque PLAY JSON, vous pouvez trouver le repo mavn uniquement pour la bibliothèque JSON et non pour l'ensemble du framework ici
Un très bon tutoriel sur la façon de les utiliser, est disponible ici:
http://mandubian.com/2012/09/08/unveiling-play-2-dot-1-json-api-part1-jspath-reads-combinators/
http://mandubian.com/2012/10/01/unveiling-play-2-dot-1-json-api-part2-writes-format-combinators/
http://mandubian.com/2012/10/29/unveiling-play-2-dot-1-json-api-part3-json-transformers/
la source
Permettez-moi également de vous donner la version SON de JSON :
la source
Play a publié son module pour gérer JSON indépendamment de Play Framework, Play WS
J'ai publié un article de blog à ce sujet, consultez-le sur http://pedrorijo.com/blog/scala-json/
En utilisant des classes de cas et Play WS (déjà inclus dans Play Framework), vous convertissez le cas entre les classes json et case avec un simple one-liner implicite
la source