在 Spray-json 中序列化 List[case class]

jae*_*ard 5 spray-json

我有一个名为 Recording 的案例类,我可以使用 Spray-json 正确序列化它,但无法序列化 List[Recording]。

我看到的关于列表序列化的答案涉及缺少 DefaultJsonProtocol._ 的导入,但这对我没有帮助。

这是代码:

import spray.json._
import scala.collection.immutable

object RecordingJsonProtocol extends DefaultJsonProtocol {
  implicit val recordingFormat = jsonFormat2(Recording.apply)  
}

case class Recording(name: String, hashOffsetIndex: immutable.Map[String, Int])

object RecordingLoader {

  import RecordingJsonProtocol._
  import DefaultJsonProtocol._

  def recordingsToJson(filename: String, recordings : List[Recording]) = {
    println(recordings.toJson.prettyPrint)
  }
}
Run Code Online (Sandbox Code Playgroud)

我收到的错误是:

Error:(16, 24) Cannot find JsonWriter or JsonFormat type class for List[Recording]
    println(recordings.toJson.prettyPrint)
                       ^
Run Code Online (Sandbox Code Playgroud)

编辑:问题已解决

import DefaultJsonProtocol._ 
Run Code Online (Sandbox Code Playgroud)

是多余的,因为 RecordingJsonProtocol 扩展了 DefaultJsonProtocol ——但这不仅仅是多余的,它还会阻止 RecordingJsonProtocol 工作。