案例类列表的akka​​-http隐式json格式

时间:2020-09-29 09:36:08

标签: json scala marshalling implicit akka-http

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

我不知道如何处理它们

2 个答案:

答案 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 ...
}
相关问题