Scala - Écriture d'objet Json de fichier et le lire
J'ai une Carte ci-dessous
val map : scala.collection.mutable.Map[String,Any] = Map(
dummy1 -> ["cat1", "hash1", 101, 1373269076, {"1" : ["dummy", "dummy", "dummy"]}],
dummy2 -> ["cat1", "hash1", 102, 1373269076, {"2" : ["dummy", "dummy", "dummy"]}],
dummy3 -> ["cat1", "hash1", 103, 1373269076, {"3" : ["dummy", "dummy", "dummy"]}]
)
J'ai converti en une chaîne Json et puis il a écrit dans un fichier avec le code ci-dessous
Some(new PrintWriter("foo.txt")).foreach{p =>
p.write(JSONObject(map.toMap).toString()); p.close
}
Suis capable de lire la chaîne Json à partir d'un fichier à l'aide
val json_string = scala.io.Source.fromFile("foo.txt").getLines.mkString
Comment puis-je obtenir ma carte de retour à partir de la chaîne Json ci-dessus?
EDIT: Suis capable de lire la carte avec
val map1 = JSON.parseFull(json_string).get.asInstanceOf[Map[String,Any]]
Mais, ce processus prend plus de temps que la taille de la carte augmente.
Par
more time
, voulez-vous dire O(n) ou quelque chose de pire? Si le pire, envisager d'élargir votre tas.OriginalL'auteur yAsH | 2013-07-08
Vous devez vous connecter pour publier un commentaire.
Essayez d'utiliser un probablement plus rapide (et plus approfondie) mappeur.
Je vous conseille d'utiliser JacksMapper qui encapsule l'excellent Jackson pour un effet plus agréable à l'utilisation de la Scala.
La sérialisation JSON devient aussi simple que de
... et la désérialisation
(edit)
Vous pouvez faire aussi de l'écriture et de la lecture simple one-liners à l'aide de FileUtils de commons-io faire
et
À partir de la première page
This version of jacks has been tested against Scala 2.9.3, 2.10.2 and Jackson 2.2.2
Suis en utilisant Scala 2.9.3-RC2. Obtiens l'erreur jacks_2.10-2.2.2.jar est cross-compilé avec une version incompatible de la Scala (2.10) immédiatement après avoir ajouté le fichier jar du projet.
Je l'utilise avec 2.10.2. Avez-vous le bon ? Accoridng à mon repo maven la version 2.9.3 est
<dependency> <groupId>com.lambdaworks</groupId> <artifactId>jacks_2.9.3</artifactId> <version>2.2.0</version> </dependency>
J'ai fait de même. Il n'y a pas d'erreurs dans le code. Mais, eclipse est montrant 2 problèmes 1) Erreur de compilateur Scala, 2) SBT constructeur s'est écrasé lors de la compilation. Ai-je besoin d'ajouter Jackson bocal de trop?
OriginalL'auteur Bruno Grieder
J'ai effectivement eu beaucoup plus de l'utilisation de json4s. La documentation est beaucoup plus clair et complet, et l'utilisation semble un peu plus facile.
Une opération similaire à celui que vous demandez ressemblerait à ceci
OriginalL'auteur Greg