Play框架:如何将枚举类型序列化/反序列化为JSON。

18 浏览
0 Comments

Play框架:如何将枚举类型序列化/反序列化为JSON。

给定以下枚举类型...

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)
  }
}

...我需要将其序列化/反序列化为JSON。 myEnumFormat 无法编译,并且我总是收到以下错误消息:

类型不匹配;
[error]  找到: models.MyEnum.Value
[error]  需要: play.api.libs.json.JsResult[models.MyEnumValue]
[error]  注意: 隐式值myEnumFormat在此处不适用,因为它在应用点之后,并且缺乏显式的结果类型
[error]     def reads(json: JsValue) = MyEnum.withName(json.as[JsString].value)

我有什么遗漏的吗?

0