pr1*_*001 4 api pagination iterator scala
我正在编写一个Scala库,以便更轻松地查询分页JSON API.每个API调用都返回一个如下所示的对象:
{
"count": 100,
"current_page": 1,
"total_pages": 2,
"records": [
...
]
}
Run Code Online (Sandbox Code Playgroud)
我想有一个函数返回某种迭代器,如MyIterator [Record].在Scala世界中是否有任何标准方法可以做到这一点,甚至可能在标准库中构建可以帮助我的方法?
我通常使用lift-json进行JSON解析,如果这有用的话.
谢谢.
如果你有一个,Iterator[Iterator[A]]你可以flatten用来生成一个Iterator[A]链接所有嵌套迭代器:
scala> Iterator(Iterator(1, 2), Iterator(3, 4)).flatten.toList
res0: List[Int] = List(1, 2, 3, 4)
Run Code Online (Sandbox Code Playgroud)
结合Iterator 伴侣对象上的一个工厂方法,您可以将其转换为单行:
Iterator.range(1, pageCount).map(i: Int => fetchPage(i)).flatten
Run Code Online (Sandbox Code Playgroud)
如果您只能通过检索页面来获取页数,则可能需要更复杂一些......例如:
val (firstPage, pageCount) = getFirstPageWithCount()
firstPage ++ (Iterator.range(2, pageCount).map(fetchPage).flatten)
Run Code Online (Sandbox Code Playgroud)