[英]akka-http implicit json format for list of case classes
我要你做出回应
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 <: Product] 隐式 val jsCats = jsonFormat1(Seq[类别])
错误:(8, 40) 类型不匹配; found : Seq[DAO.Category] => Seq[DAO.Category] required: P1 => T 注意:隐式值 jsCats 在这里不适用,因为它出现在应用程序点之后并且它缺少显式结果类型隐式 val jsCats = jsonFormat1 (Seq[类别])
错误:(8, 36) 找不到类型为 spray.json.DefaultJsonProtocol.JF[P1] 的证据参数的隐式值(找不到 P1 的 JsonWriter 或 JsonFormat 类型类)隐式 val jsCats = jsonFormat1(Seq[Category])
我不知道如何处理他们
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]
而 case 类是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
本身。
问题是我只有简单的应用对象。
object myApp {
// my code
}
这些变化帮助
trait appJSONProtocol extends DefaultJsonProtocol {
implicit val jsCat = jsonFormat3(Category)
}
object myApp extends App with appJSONProtocol with SprayJsonSupport {
// my code ...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.