writes - Play Framework: cómo serializar/deserializar una enumeración a/desde JSON
scala import play json (3)
He creado más EnumerationReads, EnumerationWrites y EnumerationFormat clases genéricas y reutilizables y las he publicado en mi página github:
Dada la siguiente enumeración ...
object MyEnum extends Enumeration {
type MyEnum = Value
val Val1 = Value("val1")
val Val2 = Value("val2")
val ValN = Value("valN")
implicit val myEnumFormat = new Format[MyEnum] {
def reads(json: JsValue) = MyEnum.withName(json.as[String].value) // doesn''t compile
def writes(myEnum: MyEnum) = JsString(myEnum.toString)
}
}
... Necesito serializar / deserializarlo a / desde JSON. myEnumFormat
no se compila y siempre aparece el siguiente mensaje de error:
type mismatch;
[error] found : models.MyEnum.Value
[error] required: play.api.libs.json.JsResult[models.MyEnumValue]
[error] Note: implicit value myEnumFormat is not applicable here because it comes after the application point and it lacks an explicit result type
[error] def reads(json: JsValue) = MyEnum.withName(json.as[JsString].value)
¿Me estoy perdiendo de algo?
Intenta cambiarlo a
def reads(json: JsValue) = JsSuccess(MyEnum.withName(json.as[String].value))
implicit val genderReads = Reads.enumNameReads(Gender)
funciona bien para mí. Juega Scala 2.4.2