找不到案例 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 然后定义您的格式。
编辑:更新答案
按照 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 然后定义您的格式。
编辑:更新答案