这是因为编译器无法自动推断出你想要使用的 JsonProtocol。你需要在使用它的地方显式导入 JsonProtocol 的实现,或将其导入到你的作用域中。
例如,如果你使用 spray-json 库创建了一个名为 Person 的 case class 和对应的 JsonProtocol,你需要在代码中显式导入 JsonProtocol 的实现:
import spray.json._
import DefaultJsonProtocol._
case class Person(name: String, age: Int)
object PersonJsonProtocol extends DefaultJsonProtocol {
implicit val personFormat = jsonFormat2(Person)
}
object Main extends App {
import PersonJsonProtocol._
val personJson = """{"name":"John", "age":42}"""
val person = personJson.parseJson.convertTo[Person]
println(person)
}
在导入了 JsonProtocol 后,编译器就可以自动推断出你希望使用的 JsonFormat 了。