当前位置: 首页 > 知识库问答 >
问题:

无法从Flux转换为List

柳坚白
2023-03-14

我在我的项目中使用spring webflux与外部API进行通信。在我的项目中,我无法将Flux转换为List。

在尝试对collectList().block()执行同样的操作时,flux的所有元素都被连接到一个字符串中,并存储在List的第0个索引处。如果我返回Flux而不是List,那么它会发送预期的响应。但我需要操作内容并将其作为子对象添加到其他对象中&因此尝试返回列表。

public List<String> retrieveWebLogin(String platformId) {
    try {
        ClientResponse response = webClient
                .get()
                .uri(EV_LEGACY_WEB_RTC_ENDPOINT_API_PATH)
                .accept(APPLICATION_JSON)
                .exchange().block();

        Flux<String> uriFlux = response.bodyToFlux(String.class);

        List<String> uriList = uriFlux.collectList().block();
        return uriList;

    } catch (Exception e) {
        logger.info(e.getMessage(), e);
    }
    return null;
}

预期结果:[“Agent1”,“Agent2”]

实际结果:“[”Agent1“,”Agent2“]”

共有1个答案

林项明
2023-03-14

您的代码应该是这样的。

final List<String> uriList = webClient
            .get()
            .uri(EV_LEGACY_WEB_RTC_ENDPOINT_API_PATH)
            .accept(MediaType.APPLICATION_JSON_UTF8)
            .exchange()
            .flatMap(response -> response.bodyToMono(new ParameterizedTypeReference<List<String>>() {}))
            .block();
 类似资料:
  • 我有一个方法createCompliance响应(),它返回BOLConplationObject对象,在此之前,我将其更改为BOLConplationMono,因为我必须在其中调用另一个反应性服务。但是在这样做之后,我调用该服务的当前服务在第6行和第7行出现错误。 我为其更改了退货类型的另一项服务是

  • 我正在学习Spring WebFlux。 我的实体是这样的: 我有一个储存库(R2使用H2数据库)如下: 我的控制器是: 目前为止一切正常。我能够每3秒钟向视图返回整个用户列表。这里没有任何问题。 现在,我想将Flue,即Flux Flux2=userRepository.findAll()发送到视图。这意味着,不是如何才能? 问题:我如何才能做到这一点?即我如何才能每3秒将整个Flux发送到我的

  • 更新: 一点我想要实现的内容。我有两个服务--一个通过Http返回me,另一个通过Redis返回。对于这两种情况,我有完全相同的功能-10-15个操作符链,我想要实现的是避免重复代码。 例如:

  • 我有一个Web服务,我想检索树的元素到根节点。我有一个网络流量接口,它在每次调用时返回一个单声道: 让我们假设有一棵树 我想创建以下方法: 这将给我在getNodeChain(5)上一个通量,节点为5,3和1,然后完成。 不幸的是,我不太明白如何按顺序组合Monos,但不阻止它们。使用,我想我需要在每个mono上阻塞,以检查它是否有下一个元素。我发现的其他方法似乎只结合了固定数量的mono,但不是

  • 问题内容: 我正在使用Fragments for tablet创建一个应用程序。到目前为止,我已经在左侧创建了一些按钮,并且在单击按钮时出现了碎片。 但是我在MainActivity.java文件中遇到错误“类型不匹配错误:无法从转换为”,这是我无法实现它的主要原因。我已经导入了。 我该如何解决我的问题? 我的MainActivity.java代码 问题答案: 您无需在代码中使用- 详情请参见此处

  • 无法将属性“java.time.LocalDate Timestamp”映射到“java.time.offsetDateTime UpdateBy”。考虑声明/实现一个映射方法:“java.time.offsetDateTime map(java.time.LocalDate value)”。 我尝试在映射器中声明以下方法。 我得到了错误: 有人能解释一下如何执行转换吗?