大佬教程收集整理的这篇文章主要介绍了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
是具有两个变体的和类型:Left
和 Right
。基本上,这意味着当一个方法返回 Either[A,B]
时,实际结果可以是 either A
或 B
包裹在 {{ 1}} 或 Left
分别。
Right
常用于表示可能失败的操作的结果,其中 Either
在出错时返回,而 Left
包含操作结果,以防万一成功。如果是这种情况,您可能希望对结果进行模式匹配以提取值:
Right
以上是大佬教程为你收集整理的Serialization.read() 在地图块 [Scala] 中未“找到”全部内容,希望文章能够帮你解决Serialization.read() 在地图块 [Scala] 中未“找到”所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。