首页 > 解决方案 > 案例类列表的akka​​-http隐式json格式

问题描述

我要 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 <: Product] 隐式 val jsCats = jsonFormat1(Seq[类别])

错误:(8, 40) 类型不匹配;found : Seq[DAO.Category] ​​=> Seq[DAO.Category] ​​required: P1 => T 注意:隐式值 jsCats 在此处不适用,因为它位于应用程序点之后,并且缺少显式结果类型implicit val jsCats = jsonFormat1 (序列[类别])

错误:(8, 36) 找不到 spray.json.DefaultJsonProtocol.JF[P1] 类型的证据参数的隐式值(找不到 P1 的 JsonWriter 或 JsonFormat 类型类)隐式 val jsCats = jsonFormat1(Seq[Category])

而且我不知道如何处理它们

标签: jsonscalamarshallingimplicitakka-http

解决方案


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])

iejsonFormat1应用于包装 a 的案例类Seq,而不是应用于Seq自身。


推荐阅读