Bruit gratuit format JSON pour les scellés des traits Jouer 2.2 bibliothèque

J'ai besoin d'obtenir un simple sérialisation JSON solution avec un minimum de cérémonie. J'ai donc été très heureux de trouver ce prochain Jeu 2.2 bibliothèque. Cela fonctionne parfaitement avec la plaine des classes de cas, par exemple,

import play.api.libs.json._

sealed trait Foo
case class Bar(i: Int) extends Foo
case class Baz(f: Float) extends Foo

implicit val barFmt = Json.format[Bar]
implicit val bazFmt = Json.format[Baz]

Mais la suivante échoue:

implicit val fooFmt = Json.format[Foo]   //"No unapply function found"

Comment puis-je configurer le prétendu manque d'extracteur pour Foo?

Ou voulez-vous recommander de toute autre bibliothèque autonome qui s'occupe de mon cas, plus ou moins complètement automatiquement? Je ne m'inquiète pas de savoir si c'est avec des macros au moment de la compilation ou de réflexion au moment de l'exécution, tant qu'il fonctionne hors de la boîte.

  • Est-il un code manquant? Est la seule chose que la définition de Foo la sealed trait Foo ligne? Qu'attendez-vous d'arriver, alors? Je suppose que Json.format pourrait fonctionner pour les classes ordinaires si elles ont un apply() et unapply() méthode.
  • Jouer json, ainsi que ascenseur json devrait être ok. Vous voyez, vous essayez d'obtenir un format d'un trait, mais presque toutes les bibliothèques qui fournissent des transparents de sérialisation sont basés sur les classes de cas. Juste en cas d'utilisation des classes et le pattern matching et vous devriez être bien.
  • J'ai besoin d'être en mesure de sérialiser les classes de type. Donc j'ai besoin d'un format pour un scellé trait qui est prolongée par un certain nombre de classes de cas. Devrait être assez scénario.
  • L'automatique Json.format ne semble pas possible avec les traits, mais vous pouvez leur écrire: stackoverflow.com/questions/14145432/... ; aussi, j'ai trébuché à travers cette question, qui pourrait être d'intérêt pour vous: stackoverflow.com/questions/6891393/...
  • J'ai récemment écrit un JSON macro qui génère jackson code pour toute la structure de l'objet à l'aide de la compilation des informations de type. La macro est en mesure de générer un match de déclaration pour tous les sous-types d'un type scellé par le biais de l'api reflection knownDirectSubclasses, vu ici: scala-lang.org/api/current/.... Je ne connais pas d'autre librairie Json qui fait cela, et pourtant...
  • avez-vous l'esprit de partage de code?
  • Si vous pouvez attendre une semaine, je peux voir à propos de le faire sur GitHub. Avertissement: Il a été écrit pour notre cas d'utilisation au travail et non pas comme générique de la bibliothèque.
  • Pas de problème. J'ai écrit à mi-chemin de ma propre mise en œuvre dès maintenant. Le writer fonctionne déjà, encore quelques problèmes à résoudre avec les objets singleton dans la reader partie.
  • en fonction de vos objectifs, nous pouvons peut-être combiner les forces de
  • Oui, bien sûr, projet -- en effet, je pense que ce doit être tiré en jeu-json par la suite.

InformationsquelleAutor 0__ | 2013-06-10