如何将 Mono<Map<String,Optional<String>>> 转换为 Flux<Tuple<String,Optional<String>>>

sin*_*ica 3 project-reactor spring-webflux

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

客户端返回一个Mono<Map<String, Optional<String>>> 我想用键、值元素在 Flux 中拆解的对象,以便稍后可以将其组合起来。

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

Mono<Map<String, Optional<String>>>到一个

Flux<Tuple<String, String>>

我知道你可以使用a 将 a 转换Mono<List<String>>为 a Flux<String>responseMono.flatMapMany(Flux::fromIterable)

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

Mic*_*rry 5

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

如果您明确希望它是 aTuple而不是 an Entry,那么只需执行以下操作:

mono.flatMapMany(map -> Flux.fromIterable(map.entrySet()))
        .map(e -> Tuples.of(e.getKey(), e.getValue()));
Run Code Online (Sandbox Code Playgroud)