4

自分自身を参照するケースクラスに JsonFormats を提供するにはどうすればよいですか?

私はこのガイドラインに従っており、次のコードを書きました

case class Item(name: String, desc: Option[String], prices: Array[String], subitems: Option[List[Item]])

import spray.json._
import DefaultJsonProtocol._ // !!! IMPORTANT, else `convertTo` and `toJson` won't work

object MyJsonProtocol extends DefaultJsonProtocol {
  implicit val menuItemFormat = jsonFormat(Item, "name", "desc", "prices", "subitems")
}

import MyJsonProtocol._

次のエラーメッセージが表示されますが、残念ながら意味がわかりません。

could not find implicit value for evidence parameter of type Hi.MyJsonProtocol.JF[Option[List[mypkg.Item]]]
    implicit val menuItemFormat = jsonFormat(Item, "name", "desc", "prices", "subitems")
                             ^

どうすれば修正できますか?

4

1 に答える 1

7

再帰的な暗黙的なものを見つけるには、明示的な型定義を与える必要があります。暗黙的に次のように変更します。

implicit val menuItemFormat: RootJsonFormat[Item] = jsonFormat(Item.apply, "name", "desc", "prices", "subitems")
于 2013-05-08T02:31:33.303 に答える