Ho bisogno di ottenere una semplice soluzione di serializzazione JSON con cerimonia minima. Quindi ero abbastanza felice di trovare this forthcoming Play 2.2 library. Ciò funziona perfettamente con classi di casi in chiaro, ad es.Formato JSON senza rumore per tratti sigillati con libreria Play 2.2
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]
Ma il seguente esito negativo:
implicit val fooFmt = Json.format[Foo] // "No unapply function found"
Come dovrei configurare il presunto estrattore mancante per Foo
?
Oppure consiglieresti un'altra libreria autonoma che gestisce la mia custodia in modo più o meno completamente automatico? Non mi interessa se questo è con i macro in fase di compilazione o riflessione in fase di esecuzione, a patto che funzioni fuori dalla scatola.
C'è del codice mancante? L'unica cosa che definisce 'Foo' la linea' sealed trait Foo'? Cosa ti aspetti che accada, allora? Suppongo che Json.format' potrebbe funzionare per le classi regolari se hanno un metodo 'apply()' e 'unapply()'. – Carsten
Play json, così come lift json dovrebbe essere ok. Vedete, state cercando di ottenere un formato per un tratto, ma quasi tutte le librerie che forniscono la serializzazione trasparente si basano sulle classi dei casi. Basta usare classi di casi e pattern matching e si dovrebbe andare bene. – vitalii
Devo essere in grado di serializzare classi di tipi. Perciò ho bisogno di un formato per un tratto sigillato che è esteso da un numero di classi di casi. Dovrebbe essere uno scenario abbastanza comune. –