Scala,PlayFramework - 没有可用于Any的隐式格式

时间:2017-04-19 07:20:54

标签: scala playframework implicit

我有一个案例类和隐式格式如下:

case class Foo(x:String, y:Any)
implicit val fooFormat = Json.format[Foo]

我希望将类Foo转换为Json,但是,我收到错误没有隐式格式任何可用的

val foo = Foo("apple", 12)
println(Json.toJson(foo))
[error] Test.scala:33: No implicit format for Any available.
[error]     implicit val fooFormat = Json.format[Foo]

那么,我如何为Any类型提供隐式格式?

1 个答案:

答案 0 :(得分:3)

明确提供写入并处理Start-Process可以是Int,Long,Float,Double,String,Boolean等的情况

Any

Scala REPL

case class Foo(x:String, y:Any)

implicit val writes = new Writes[Foo] {
  override def writes(o: Foo): JsValue = {
    Json.obj("x" -> o.x) ++ {
      o.y match {
        case a: Int => Json.obj("y" -> a)
        case a: Long => Json.obj("y" -> a)
        case a: Float => Json.obj("y" -> a)
        case a: Double => Json.obj("y" -> a)
        case a: String => Json.obj("y" -> a)
        case a: Boolean => Json.obj("y" -> a)
        case a => Json.obj("y" -> a.toString)
      }
    }
  }
}