Angenommen, ich habe eine Aufzählung oder versiegelt Gruppe von Fallobjekte wie folgt:Serialize und Deserialize scala Aufzählungen oder Fallobjekte json4s mit
sealed abstract class Status
case object Complete extends Status
case object Failed extends Status
case object Pending extends Status
case object Unknown extends Status
oder
object Status extends Enumeration {
val Complete, Failed, Pending, Unknown = Value
}
Was ist der einfachste Weg json zu erstellen Formate für diese, so dass ich sehr einfach (programmatisch) JSON-Formate für die Verwendung in einer benutzerdefinierten Factory-Methode JsonFormat
, wie folgt generieren kann, die für alle normalen Fall Klassen, Strings, Sammlungen usw. funktioniert, aber produziert {}
oder {"name": null}
für die oben genannten zwei Arten von Aufzählungen ?:
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)
}
}