spray-Json 序列化接口类型

Spray-Json serialize interface type


使用 spray-json 如何序列化以下 class

case class Vegetable(name: String, color: String, seller:ISeller)

这里ISeller是一个Java接口。我是 spray-json 的新手,不确定如何序列化和反序列化。

我试过了,但它给出了运行时错误

implicit val VegetableFormat = jsonFormat3(Vegetable)

这里的任何指针都会很棒。

您需要为您的 ISeller 对象定义一种转换 to/from JSON 的方法。 除了您提供的代码之外,您还需要为 ISeller 定义格式化程序,如下所示:

  implicit object ISellerJsonFormat extends RootJsonFormat[ISeller] {
    def write(c: ISeller) = JsNull

    def read(value: JsValue) = null
  }

上面的代码片段忽略了 ISeller,所以 vegetable.toJson 会产生:

{"name":"Onion","color":"red","seller":null}

如果你想要read/write更有意义的东西,你可以实现更复杂的逻辑。请参阅 https://github.com/spray/spray-json 中的 "Providing JsonFormats for other Types" 部分。