如何在Scala Play2中合并来自多个响应的数据?

机械师

我需要对不同的URL进行一些请求,从他们的响应中获取数据,然后将此信息放在一个列表中,但是我对此主题有些误解。1)我只要求一个

def doRequest: Future[WSResponse] = {
client
  .url("MY_URL")
  .withRequestTimeout(5000)
  .get()}

然后我解析json以响应我的对象列表:

def list: Future[List[FoobarEntry]] = {
doRequest.map {
  response => {
    val json = response.json \ "foobar"
      json.validate[List[FoobarEntry]] match {
      case js:JsSuccess[List[FoobarEntry]]=>
        js.get
      case e:JsError => Logger.error(JsError.toFlatJson(e).toString()); List()
    }
  }
}}

我认为对于几个网址,我应该写一些像

def doRequests: List[Future[WSResponse]] = {
List(client
     .url("URL_1")
     .withRequestTimeout(5000)
     .get(),
     client
     .url("URL_2")
     .withRequestTimeout(5000)
     .get())}

但是如何像我一样解析这个Future [WSResponse]列表def list: Future[List[FoobarEntry]]呢?

约翰南德伦

由于您将将来的响应放入列表中,因此您将必须使用解析逻辑将每个将来的响应映射为FoobarEntry像这样:

val responseFutures: List[Future[WSResponse]] = ???
val foobarFutures: List[Future[FoobarEntry]] = 
  responseFutures.map(future => future.map(response => parse(response)))

现在,您有了将来解析的响应的列表,但是要在所有响应到达后执行某些操作,则需要对该列表进行排序:

val futureFoobars = Future.sequence(foobarFutures)

因此,序列帮助您从获得C[Future[A]]Future[C[A]]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在grafana中堆叠来自多个来源的数据

来自分类Dev

如何在grafana中堆叠来自多个来源的数据

来自分类Dev

如何在整个应用程序中以角度2保存来自多个服务的数据?

来自分类Dev

如何合并和显示来自多个表的数据

来自分类Dev

如何使用重复键合并来自多个词典的数据?

来自分类Dev

如何在Python中合并来自多个文件夹的多个CSV文件?

来自分类Dev

如何使用linq2sql在单个gridview或gridpanel中显示来自多个表的数据?

来自分类Dev

Android Room:如何将来自多个SQL查询的数据合并到一个ViewModel中

来自分类Dev

如何在rails中的一行中显示来自多个表的数据

来自分类Dev

如何在 Access 中进行 UNION 查询以合并来自多个表的数据并排除匹配的数据与名为“SignedOffClientList”的表?

来自分类Dev

如何在R中存储来自多个数据帧的nrow信息

来自分类Dev

如何使用NodeJS服务器合并来自多个API的JSON数据

来自分类Dev

使用XSL合并后如何处理来自多个XML文件的所有数据

来自分类Dev

让Swagger在Play2 Scala中工作

来自分类Dev

如何在Scala Play 2.0中发送响应?

来自分类Dev

如何在scala中合并数组序列

来自分类Dev

如何在scala中合并数组序列

来自分类Dev

如何使用jq合并来自多个文件的JSON记录

来自分类Dev

如何将来自多个数据库的数据合并到一个结果集中。(新旧系统)

来自分类Dev

当查询包含来自多个数据库的表的联接时,如何在boto3中设置QueryExecutionContext?

来自分类Dev

PHP MYSQL如何在一个查询中链接来自多个表的数据元素

来自分类Dev

如何在Play(Scala)回应后中断

来自分类Dev

如何对包含来自多个数据的变量列表的列表中的每个对象进行排序

来自分类Dev

如何在惯用的Scala中编码?

来自分类Dev

如何在Scala中实现异构容器

来自分类Dev

如何在Scala中实施Kafka Consumer

来自分类Dev

如何在scala中连接选项

来自分类Dev

如何在Scala中实现不变列表?

来自分类Dev

如何在Scala中创建嵌套组

Related 相关文章

  1. 1

    如何在grafana中堆叠来自多个来源的数据

  2. 2

    如何在grafana中堆叠来自多个来源的数据

  3. 3

    如何在整个应用程序中以角度2保存来自多个服务的数据?

  4. 4

    如何合并和显示来自多个表的数据

  5. 5

    如何使用重复键合并来自多个词典的数据?

  6. 6

    如何在Python中合并来自多个文件夹的多个CSV文件?

  7. 7

    如何使用linq2sql在单个gridview或gridpanel中显示来自多个表的数据?

  8. 8

    Android Room:如何将来自多个SQL查询的数据合并到一个ViewModel中

  9. 9

    如何在rails中的一行中显示来自多个表的数据

  10. 10

    如何在 Access 中进行 UNION 查询以合并来自多个表的数据并排除匹配的数据与名为“SignedOffClientList”的表?

  11. 11

    如何在R中存储来自多个数据帧的nrow信息

  12. 12

    如何使用NodeJS服务器合并来自多个API的JSON数据

  13. 13

    使用XSL合并后如何处理来自多个XML文件的所有数据

  14. 14

    让Swagger在Play2 Scala中工作

  15. 15

    如何在Scala Play 2.0中发送响应?

  16. 16

    如何在scala中合并数组序列

  17. 17

    如何在scala中合并数组序列

  18. 18

    如何使用jq合并来自多个文件的JSON记录

  19. 19

    如何将来自多个数据库的数据合并到一个结果集中。(新旧系统)

  20. 20

    当查询包含来自多个数据库的表的联接时,如何在boto3中设置QueryExecutionContext?

  21. 21

    PHP MYSQL如何在一个查询中链接来自多个表的数据元素

  22. 22

    如何在Play(Scala)回应后中断

  23. 23

    如何对包含来自多个数据的变量列表的列表中的每个对象进行排序

  24. 24

    如何在惯用的Scala中编码?

  25. 25

    如何在Scala中实现异构容器

  26. 26

    如何在Scala中实施Kafka Consumer

  27. 27

    如何在scala中连接选项

  28. 28

    如何在Scala中实现不变列表?

  29. 29

    如何在Scala中创建嵌套组

热门标签

归档