Lärm-freien JSON-format für die geschlossene Züge mit Spielen 2.2 Bibliothek

Ich brauche, um eine einfache JSON-Serialisierung Lösung mit minimalem Zeremonie. Also ich war ganz zufrieden das bevorstehende Play-2.2 Bibliothek. Dieser arbeitet perfekt mit dem einfachen Fall Klassen, z.B.

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]

Aber der folgende Fehler auf:

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

Wie würde ich das angebliche fehlen extractor für Foo?

Oder würden Sie empfehlen, alle anderen standalone-Bibliothek, die Griffe meinem Fall mehr oder weniger voll automatisch? I don ' T care ob das mit Makros zur compile-Zeit oder Reflexion zur Laufzeit, solange es funktioniert out of the box.

  • Gibt es irgendein code fehlt? Ist das einzige, was die Definition Foo die sealed trait Foo Linie? Was erwartest du, was passiert dann? Ich nehme an Json.format würde die Arbeit für den regulären Klassen, wenn Sie haben eine apply() und unapply() Methode.
  • Spielen json, sowie heben json-sollte ok sein. Sehen Sie, Sie versuchen, ein format für ein Merkmal, aber fast alle Bibliotheken, die transparenten Serialisierung sind auf der Grundlage der case-Klassen. Nur use case-Klassen und pattern-matching, und Sie sollten in Ordnung sein.
  • Ich muss in der Lage sein serialisiert Typ-Klassen. Deshalb brauche ich ein format für eine versiegelte Eigenschaft, die erweitert wird durch eine Anzahl von case-Klassen. Ist ein relativ häufiges Szenario.
  • Die automatische Json.format scheint nicht möglich, mit Eigenschaften, aber Sie können schreiben Sie: stackoverflow.com/questions/14145432/... ; außerdem habe ich stolperte über diese Frage, die von Interesse sein könnten für Sie: stackoverflow.com/questions/6891393/...
  • Ich schrieb vor kurzem einen JSON-makro erzeugt, dass jackson code für jedes Objekt-Struktur mit der compile-Zeit-Typ-Informationen. Das makro ist in der Lage, erzeugen ein match-Anweisung für alle Subtypen eines geschlossenen Typ durch die reflection-api knownDirectSubclasses, sehen Sie hier: scala-lang.org/api/current/.... Ich kenne keine andere Json-Bibliothek, die das tut, aber...
  • tun Sie etwas dagegen, zu teilen, dass der code?
  • Wenn Sie eine Woche warten, kann ich sehen, über wie es auf GitHub. Warnung: geschrieben wurde Es für unseren Anwendungsfall bei der Arbeit und nicht als generische Bibliothek.
  • Kein problem. Ich habe auf halbem Weg geschrieben meine eigene Implementierung jetzt. Die writer schon läuft, noch einige Probleme zu beheben, mit singleton-Objekte in der reader Teil.
  • je nach Ihren Zielen, können wir vielleicht unsere Kräfte vereinen
  • Ja sicher, dies ist die-Projekt -- in der Tat, würde ich denken, dass dies sollte gezogen werden, in play-json schließlich.

InformationsquelleAutor 0__ | 2013-06-10
Schreibe einen Kommentar