6

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

1 回答 1

6

从您的会话看来,好像您在声明您的Person类之前定义了协议,这意味着您已经在范围内拥有另一个 Person 类。定义协议后,您重新定义Person类,因此无法找到格式。所以总结一下,确保你首先声明你的Person类,然后定义你的格式。

编辑:更新的答案

于 2015-01-20T08:54:15.483 回答