找不到案例 class 的 JsonWriter 或 JsonFormat 类型 class

Cannot find JsonWriter or JsonFormat type class for a case class

按照 http://www.smartjava.org/content/first-steps-rest-spray-and-scala 的教程,出现了一些意外的错误消息。到底是怎么回事?我是否通过 implicit val personFormat = jsonFormat3(Person) 调用定义了隐式 JsonWriter?

scala> import spray.json.DefaultJsonProtocol
import spray.json.DefaultJsonProtocol

scala> object MyJsonProtocol extends DefaultJsonProtocol {
  implicit val personFormat = jsonFormat3(Person)
}
     |      | defined object MyJsonProtocol

scala> case class Person(name: String, fistName: String, age: Long)
defined class Person

scala> import spray.json._
import spray.json._

scala> import MyJsonProtocol._
import MyJsonProtocol._

scala> Person(name="a", fistName="b", age = 10).toJson
<console>:45: error: Cannot find JsonWriter or JsonFormat type class for Person
              Person(name="a", fistName="b", age = 10).toJson
                                                       ^

从你的会话来看,你似乎在声明你的 Person class 之前定义了协议,这意味着你已经有另一个人 class 在范围内。定义协议后,您再重新定义Person class,因此无法找到格式。综上所述,确保您首先声明您的 Person class 然后定义您的格式。

编辑:更新答案