【问题标题】:Type mismatch on same type同一类型的类型不匹配
【发布时间】:2014-11-13 11:44:08
【问题描述】:

我正在尝试使用喷雾路由发送 json 响应 调用完成后出现此错误

Error:(45, 29) type mismatch;
 found   : _2.Entities.EventsSearchResponse where val _2: eyein.eventful.eventful
 required: _3.Entities.EventsSearchResponse where val _3: eyein.eventful.eventful
                api.jsonize(value)
                            ^

api.jsonize 只是marshal 的包装器

在原始 api 文件中使用它可以毫无问题地将 json 打印为字符串。

我最感兴趣的错误显然是一些打字问题,但我不知道从哪里开始

这是路线

val myRoute =
  path("event" / IntNumber / IntNumber) {(from,to) =>
    get {
      respondWithMediaType(`application/json`) {
        onSuccess(api.GetEventsByDate(from.toString,to.toString)){ value =>
            complete{
              api.jsonize(value)
            }
          }
        }
      }
    }

json化签名

  def jsonize(eventList : Entities.EventsSearchResponse)

【问题讨论】:

  • 不确定,但通常当您遇到“预期 X,得到 X”类型的类型错误时,这是​​因为 X 在 Scala 和 Java 版本中是不同的类型。您是否尝试过检查 java 类的导入?
  • 可以提供jsonize签名吗?
  • @GabrielePetronella 我已添加签名

标签: scala marshalling spray


【解决方案1】:

Scala 认为内部类的类型是路径相关的,并且并不总是以您期望的方式推断路径相关的类型。尝试给它一个明确的路径依赖类型:

onSuccess(api.GetEventsByDate(...): Future[api.Entities.EventsSearchResponse]) {
  value: api.Entities.EventsSearchResponse => ...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-04
    • 1970-01-01
    • 2015-04-20
    • 2020-08-28
    • 1970-01-01
    相关资源
    最近更新 更多