繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM