1

次のコードがあります。

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

  Ok(Json.toJson(Anon))
}

そして、私はこのコンパイルエラーを受け取ります:

タイプ Object{val foo: String; の Json デシリアライザーが見つかりません。値バー: 文字列}. この型の暗黙の Writes または Format を実装してみてください。

この問題のクイックフィックスは何ですか? このエラーに関連する別の質問が見つかりましたが、おそらくより具体的/複雑でした。

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 に答える