如何使用嵌套案例类和喷雾json隐式

nav*_*ore 3 json scala spray

我正在尝试将case类转换为jsonspray.io json。下面的代码:

case class Value(amt: Int)
case class Item(name: String, count: Value)
object MyJsonProtocol extends DefaultJsonProtocol {
  implicit val itemFormat = jsonFormat2(Item)
}
import MyJsonProtocol._
import spray.json._
val json = Item("mary", Value(2)).toJson
println(json)
Run Code Online (Sandbox Code Playgroud)

给出:

could not find implicit value for evidence parameter of type onextent.bluecase.examples.ex1.ExampleJson2.MyJsonProtocol.JF[Value]
Run Code Online (Sandbox Code Playgroud)

我也尝试JsonProtocol为Value 定义一个值,但得到相同的值。搜索stackoverflow我只看到与相关的错误generics,但不是。

我想念什么?(现在重新阅读有关隐式的信息...)

小智 6

您的Value类需要一个json格式,因为它是Item类的一部分。因此,您的对象将需要如下所示:

object MyJsonProtocol extends DefaultJsonProtocol {
 implicit val valueFormat = jsonFormat1(Value)
 implicit val itemFormat = jsonFormat2(Item)
}
Run Code Online (Sandbox Code Playgroud)