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

时间:2015-01-20 08:37:50

标签: json scala spray-json

按照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
                                                       ^

1 个答案:

答案 0 :(得分:6)

在您的会话中,您似乎在声明Person类之前定义了协议,这意味着您已经在范围内拥有另一个Person类。在定义协议之后,您重新定义Person类,因此无法找到格式。总而言之,请确保首先声明您的Person课程,然后定义您的格式。

编辑:更新了答案