程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Serialization.read() 在地图块 [Scala] 中未“找到”大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Serialization.read() 在地图块 [Scala] 中未“找到”?

开发过程中遇到Serialization.read() 在地图块 [Scala] 中未“找到”的问题如何解决?下面主要结合日常开发的经验,给出你关于Serialization.read() 在地图块 [Scala] 中未“找到”的解决方法建议,希望对你解决Serialization.read() 在地图块 [Scala] 中未“找到”有所启发或帮助;

我使用 Json4s 处理来自 http 响应的 Json 响应。我之前使用过 Await,但现在改用 Future

我有一个类似的功能:

executeRequest(): Future[Response[String]]

和另一个函数,如:

def getAccesstoken() = {
 executeRequest().map {
    response: Response[String] => // read method in the next line cannot be resolved
      read[AccesstokenResponse](response.body).access_token
   }
 // the following line is ok
 read[AccesstokenResponse]("{\"access_token\":\"fake_token\"}").access_token
}

现在,我的 IntelliJ 不再识别/找到 read 块内的 map,我假设这意味着我做错了什么。但是 read 块外的 map 解析正确。

我在这里做错了什么?我是 Scala 的新手:/

编译器输出:

overloaded method value read with alternatives:
  (in: java.io.Reader)(implicit formats: org.Json4s.Formats,implicit mf: scala.reflect.Manifest[AccesstokenResponse])AccesstokenResponse <and>
  (Json: org.Json4s.Jsoninput)(implicit formats: org.Json4s.Formats,implicit mf: scala.reflect.Manifest[AccesstokenResponse])AccesstokenResponse <and>
  (Json: String)(implicit formats: org.Json4s.Formats,implicit mf: scala.reflect.Manifest[AccesstokenResponse])AccesstokenResponse
 cannot be applIEd to (Either[String,String])
      read[AccesstokenResponse](response.body).access_token

解决方法

您得到的错误意味着 read 方法可以接受以下类型之一的参数:

  • java.io.Reader
  • org.json4s.JsonInput
  • String

此行有效,因为您将 String 传递给 read

read[AccessTokenResponse]("{\"access_token\":\"fake_token\"}").access_token

但是,正如我们从错误消息中看到的,response.body 类型是 Either[String,String]

Either 是具有两个变体的和类型:LeftRight。基本上,这意味着当一个方法返回 Either[A,B] 时,实际结果可以是 either A B 包裹在 {{ 1}} 或 Left 分别。

Right 常用于表示可能失败的操作的结果,其中 Either 在出错时返回,而 Left 包含操作结果,以防万一成功。如果是这种情况,您可能希望对结果进行模式匹配以提取值:

Right

大佬总结

以上是大佬教程为你收集整理的Serialization.read() 在地图块 [Scala] 中未“找到”全部内容,希望文章能够帮你解决Serialization.read() 在地图块 [Scala] 中未“找到”所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: