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



按照 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类之前定义了协议,这意味着您已经在作用域中定义了另一个 Person 类。定义协议后,重新定义Person类,因此找不到格式。总而言之,请确保首先声明Person类,然后定义 Format。

编辑:更新的答案

最新更新