我要ro做出回应
val res: List[Categories] = CategoryObj.getCategories
complete(OK, res)
我写了一个隐式的json格式
implicit val jsCat = jsonFormat3(Category)
implicit val jsCats = jsonFormat1(Seq[Category])
但第二行却出现了三个错误
错误:(8,25)推断的类型参数 [Seq [DAO.Category],Seq [DAO.Category]]不符合方法 jsonFormat1的类型参数范围[P1,T <:产品]隐式val jsCats = jsonFormat1(Seq [Category])
错误:(8,40)类型不匹配;找到:Seq [DAO.Category] => 需要Seq [DAO.Category]:P1 => T注意:隐含值jsCats为 在这里不适用,因为它在应用程序点之后 它缺少显式结果类型隐式val jsCats = jsonFormat1(Seq [Category])
错误:(8,36)找不到证据参数的隐式值 键入spray.json.DefaultJsonProtocol.JF [P1](找不到JsonWriter或 P1的JsonFormat类型类)隐式val jsCats = jsonFormat1(Seq [Category])
我不知道如何处理它们
答案 0 :(得分:2)
Seq[Category]
显然不是Product
的子类型
inferred type arguments [Seq[DAO.Category],Seq[DAO.Category]] do not conform to method jsonFormat1's type parameter bounds [P1,T <: Product]
案例类是Product
的子类型。
在https://developer.lightbend.com/guides/akka-http-quickstart-scala/json.html上写了
implicit val usersJsonFormat = jsonFormat1(Users)
final case class Users(users: immutable.Seq[User])
即jsonFormat1
应用于包裹Seq
的案例类,而不应用于Seq
本身。
答案 1 :(得分:1)
问题是我只有一个简单的应用对象。
object myApp {
// my code
}
这些更改有所帮助
trait appJSONProtocol extends DefaultJsonProtocol {
implicit val jsCat = jsonFormat3(Category)
}
object myApp extends App with appJSONProtocol with SprayJsonSupport {
// my code ...
}