如何为引用自身的案例类提供JsonFormats?
我正在遵循 this 指南,并编写了以下代码
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")
^
我该如何解决?
答案 0 :(得分:7)
对于递归隐式查找自身,您需要为其提供显式类型定义。将隐式更改为:
implicit val menuItemFormat: RootJsonFormat[Item] = jsonFormat(Item.apply, "name", "desc", "prices", "subitems")