1

我有以下代码:

def test = Action {
  val Anon = new {
    val foo = "foo"
    val bar = "bar"
  }

  Ok(Json.toJson(Anon))
}

我得到这个编译错误:

找不到类型 Object{val foo: String; 的 Json 反序列化器 验证栏:字符串}。尝试为此类型实现隐式写入或格式。

这个问题的快速解决方法是什么?我已经在这里找到了另一个与此错误相关的问题,但也许它更具体/更复杂。

4

1 回答 1

1

据我所知,唯一的方法是引入结构类型:

  type AnonType = {
    def foo:String
    def bar:String
  }

然后你可以做

implicit val writeAnon1 = 
  ((__ \ "foo").write[String] and
   (__ \ "bar").write[String])
   {anon:AnonType => (anon.foo, anon.bar)}

或者

implicit val writeAnon2 = new Writes[AnonType] {
  def writes(o:AnonType) =
    Json toJson Map(
      "foo" -> o.foo,
      "bar" -> o.bar)
} 
于 2013-03-02T03:44:53.730 回答