gpt4 book ai didi

scala - 找不到参数 marshaller : spray. httpx.marshalling.ToResponseMarshaller 的隐式值

转载 作者:行者123 更新时间:2023-12-01 11:41:19 27 4
gpt4 key购买 nike

我在用

val akkaV = "2.2.3"
val sprayV = "1.2.0"
Seq(
"io.spray" % "spray-can" % sprayV,
"io.spray" % "spray-routing" % sprayV,
"io.spray" %% "spray-json" % "1.2.5",
"io.spray" % "spray-testkit" % sprayV,
"com.typesafe.akka" %% "akka-actor" % akkaV,
"com.typesafe.akka" %% "akka-testkit" % akkaV,

出现这个错误:

could not find implicit value for parameter marshaller: spray.httpx.marshalling.ToResponseMarshaller[List[org.bwi.models.Cluster]]

使用此代码:

object JsonImplicits extends DefaultJsonProtocol {
val impCluster = jsonFormat2(Cluster)

}

trait ToolsService extends HttpService with spray.httpx.SprayJsonSupport {

val myRoute = {

import JsonImplicits._

path("") { get { getFromResource("tools.html") } } ~
pathPrefix("css") { get { getFromResourceDirectory("css") } } ~
pathPrefix("fonts") { get { getFromResourceDirectory("fonts") } } ~
pathPrefix("js") { get { getFromResourceDirectory("js") } } ~
path("clusters") {
get {
complete {
val result: List[Cluster] = List(Cluster("1", "1 d"), Cluster("2", "2 d"), Cluster("3", "3 d"))
result //***** ERROR OCCURS HERE *****
}
}
}
}

我试过建议 on this question但它没有用,同样的错误。

我似乎无法弄清楚我需要导入的隐式是什么。任何帮助将不胜感激。

最佳答案

您需要确保 Cluster 类型的隐式 JsonFormat 在范围内,以便 SprayJsonSupport 知道如何编码该类型.有了它,您应该自动获得对从默认格式编码 List[Cluster] 的支持。

在发布的代码中 val impCluster = jsonFormat2(Cluster) 定义了 JsonFormat,但它没有标记为 implicit,所以类型类不能隐式解决。将其更改为

implicit val impCluster = jsonFormat2(Cluster)

应该可以解决问题。

关于scala - 找不到参数 marshaller : spray. httpx.marshalling.ToResponseMarshaller 的隐式值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20408734/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com