【问题标题】:How to convert a Mono<Map<String, Optional<String>>> to a Flux<Tuple<String, Optional<String>>>如何将 Mono<Map<String, Optional<String>>> 转换为 Flux<Tuple<String, Optional<String>>>
【发布时间】:2021-03-04 19:31:53
【问题描述】:

我将 WebFlux 与 Reactor 一起使用,并创建了一个休息服务,该服务使用 WebFlux webclient 聚合和转换内部服务调用的结果。

客户端返回一个Mono&lt;Map&lt;String, Optional&lt;String&gt;&gt;&gt; 我想用键、值元素在 Flux 中反汇编,以便稍后将其组合起来。

我正在考虑转换类型的客户端响应

Mono&lt;Map&lt;String, Optional&lt;String&gt;&gt;&gt; 给一个

Flux&lt;Tuple&lt;String, String&gt;&gt;

我知道您可以使用 responseMono.flatMapMany(Flux::fromIterable)Mono&lt;List&lt;String&gt;&gt; 转换为 Flux&lt;String&gt;

但我找不到处理地图的方法。

【问题讨论】:

    标签: spring-webflux project-reactor


    【解决方案1】:

    您可以使用mono.flatMapMany(map -&gt; Flux.fromIterable(map.entrySet())),它会给您一个Flux&lt;Entry&lt;String, Optional&lt;String&gt;&gt;&gt;

    如果您明确希望它是 Tuple,而不是 Entry,那么就这样做:

    mono.flatMapMany(map -> Flux.fromIterable(map.entrySet()))
            .map(e -> Tuples.of(e.getKey(), e.getValue()));
    

    【讨论】:

      猜你喜欢
      • 2021-07-27
      • 2017-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-04
      • 2016-07-21
      • 2013-05-24
      相关资源
      最近更新 更多