2

我有一个案例类UserEnum它的属性之一是

我想将此类转换为Json使用Play-Jsonapi 但我收到错误这里是我的用户类

case class User ( name : String= "", id : String = "", status : UserStatus = ACTIVE)

object User{

implicit val userFmt = Json.format[User]

}

用户状态

 object UserStatus extends Enumeration {
    type  UserStatus = Value
         val ACTIVE , INACTIVE , BLOCKED , DELETED = Value

         implicit val statusFmt = Json.format[UserStatus]  
  }

它在用户类中给了我以下错误

没有可用的 UserStatus 隐式格式

在这条线上

implicit val userFmt = Json.format[User]

并在 UserStatus(enum) 中出现以下错误

未找到 unapply 函数

在这条线上

implicit val statusFmt = Json.format[UserStatus] 

请帮我!

4

1 回答 1

3

您只需要一个用于枚举的格式化程序。我已经重写了您的示例,以此作为编写格式化程序的一种方式:

  import play.api.libs.json._
    object UserStatus extends Enumeration {
      type  UserStatus = Value
      val ACTIVE , INACTIVE , BLOCKED , DELETED = Value
    }



    case class User ( name : String= "", id : String = "", status : UserStatus.UserStatus = UserStatus.ACTIVE)

    object User{
      implicit val myEnumFormat = new Format[UserStatus.UserStatus] {
        def reads(json: JsValue) = JsSuccess(UserStatus.withName(json.as[String]))
        def writes(myEnum: UserStatus.UserStatus) = JsString(myEnum.toString)
      }

      implicit val userFmt = Json.format[User]

    }

    println(Json.toJson(User("1", "2", UserStatus.ACTIVE)))
于 2015-09-16T10:27:09.773 回答