Java scala 中使用的迭代器无法正常工作
Java iterator used in scala not working properly
我正在尝试使用 restfb 从 facebook 中获取用户的喜欢。 docs say 迭代器支持分页,但这在我的 Scala 代码中不起作用。我希望这与 javaConversions
隐式有关,但我不确定。
这是我的代码:
import com.restfb.types.{Page, Photo, User}
import com.restfb.{Parameter, Version, DefaultFacebookClient}
import collection.JavaConversions._
class Facebook(accessToken: String) {
val facebookClient = new DefaultFacebookClient(
accessToken,
Version.VERSION_2_4)
def getInterests = {
val likes = facebookClient.fetchConnection("me/likes", classOf[Page],
Parameter.`with`("fields", "id,name,category"))
likes.getData.map(like => s"id=${like.getId}, name=${like.getName} -- ")
}
}
我尝试将 likes.getData
更改为 likes.getData.iterator
,但出现错误 org.json4s.package$MappingException: Classes defined in method bodies are not supported.
我需要做什么才能使 likes.getData
返回的迭代器分页结果以便我可以映射所有结果?
尝试使用 JavaConverters
而不是 JavaConversions
:
import scala.collection.JavaConverters._
val data = likes.getData.asScala.map(like => s"id=${like.getId}, name=${like.getName} -- ")
我也需要映射连接,即:
likes.flatMap(likeConn => likeConn.map(like =>
s"id=${like.getId}, name=${like.getName} -- "))
然后自动分页
我正在尝试使用 restfb 从 facebook 中获取用户的喜欢。 docs say 迭代器支持分页,但这在我的 Scala 代码中不起作用。我希望这与 javaConversions
隐式有关,但我不确定。
这是我的代码:
import com.restfb.types.{Page, Photo, User}
import com.restfb.{Parameter, Version, DefaultFacebookClient}
import collection.JavaConversions._
class Facebook(accessToken: String) {
val facebookClient = new DefaultFacebookClient(
accessToken,
Version.VERSION_2_4)
def getInterests = {
val likes = facebookClient.fetchConnection("me/likes", classOf[Page],
Parameter.`with`("fields", "id,name,category"))
likes.getData.map(like => s"id=${like.getId}, name=${like.getName} -- ")
}
}
我尝试将 likes.getData
更改为 likes.getData.iterator
,但出现错误 org.json4s.package$MappingException: Classes defined in method bodies are not supported.
我需要做什么才能使 likes.getData
返回的迭代器分页结果以便我可以映射所有结果?
尝试使用 JavaConverters
而不是 JavaConversions
:
import scala.collection.JavaConverters._
val data = likes.getData.asScala.map(like => s"id=${like.getId}, name=${like.getName} -- ")
我也需要映射连接,即:
likes.flatMap(likeConn => likeConn.map(like =>
s"id=${like.getId}, name=${like.getName} -- "))
然后自动分页