Supponiamo ho un censimento o gruppo sigillata del caso oggetti come segue:serializzare e deserializzare enumerazioni Scala o il caso oggetti utilizzando json4s
sealed abstract class Status
case object Complete extends Status
case object Failed extends Status
case object Pending extends Status
case object Unknown extends Status
o
object Status extends Enumeration {
val Complete, Failed, Pending, Unknown = Value
}
Qual è il modo più semplice per creare json formati per questi in modo che possa facilmente (a livello di codice) generare formati json da utilizzare in un metodo di fabbrica personalizzato JsonFormat
, come il seguente, che funziona per tutte le classi di casi normali, stringhe, raccolte, ecc., ma produce {}
o {"name": null}
per questi due tipi di enumerazioni ?:
import org.json4s.DefaultFormats
import org.json4s.jackson.JsonMethods.parse
import org.json4s.jackson.Serialization
import org.json4s.jvalue2extractable
import org.json4s.string2JsonInput
trait JsonFormat[T] {
def read(json: String): T
def write(t: T): String
}
object JsonFormat {
implicit lazy val formats = DefaultFormats
def create[T <: AnyRef: Manifest](): JsonFormat[T] = new JsonFormat[T] {
def read(json: String): T = parse(json).extract[T]
def write(t: T): String = Serialization.write(t)
}
}