writes serializar play framework deserializar json scala playframework

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:

EnumerationCombinators.scala

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