如何在 Spring Boot 中使用 WebClient 从端点 Web 服务接收 MapIncompatible equality constraint: Map<String, Integer> and Map
)。我该如何修复它?
public Flux<Map<String, Integer>> findAll(String param1, String param2) {
return webClient.get()
.uri(uriBuilder -> uriBuilder
.path("/url")
.queryParam("param1", param1)
.queryParam("param2", param2)
.build())
.accept(MediaType.APPLICATION_JSON)
.retrieve()
.bodyToFlux(Map.class);
}
最佳答案
对于泛型类型(例如 Map),您应该使用 ParameterizedTypeReference而不是调用 bodyToFlux 方法中的类:
public Flux<Map<String, Integer>> findAll(String param1, String param2) {
return webClient.get()
.uri(uriBuilder -> uriBuilder
.path("/url")
.queryParam("param1", param1)
.queryParam("param2", param2)
.build())
.accept(MediaType.APPLICATION_JSON)
.retrieve()
.bodyToFlux(new ParameterizedTypeReference<>() {});
}
实际上,您可能想为类型引用定义一个常量:
private static final ParameterizedTypeReference<Map<String, Integer>> MAP_TYPE_REF = new ParameterizedTypeReference<>() {};
public Flux<Map<String, Integer>> findAll(String param1, String param2) {
return webClient.get()
.uri(uriBuilder -> uriBuilder
.path("/url")
.queryParam("param1", param1)
.queryParam("param2", param2)
.build())
.accept(MediaType.APPLICATION_JSON)
.retrieve()
.bodyToFlux(MAP_TYPE_REF);
}
关于spring-boot - 如何使用 Spring WebClient get 从端点接收 Map<String, Integer>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63522431/