我有以下代码:
def test = Action {
val Anon = new {
val foo = "foo"
val bar = "bar"
}
Ok(Json.toJson(Anon))
}
我得到了这个编译错误:
没有为类型Object找到Json反序列化器{val foo:String; val bar: 串}。尝试为此类型实现隐式写入或格式。
这个问题的快速解决方法是什么?我已经在这里发现了另一个与此错误相关的问题,但也许它更具体/更复杂。
答案 0 :(得分: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)
}