小编k.k*_*lev的帖子

带有 ParameterizedTypeReference 的 Spring WebClient 不起作用

我有一个 Spring Boot 应用程序,我正在使用 WebClient 向 API 发出请求,该 API 返回以下格式,其中{"results": {...}}字段中的对象results可以采用多种不同的格式。我创建了以下类来存储 API 响应。

@Data
@Jacksonized
@Builder
public class ApiResponse<T> {
    private T results;
}
Run Code Online (Sandbox Code Playgroud)

当我调用以下方法时:

public MyResClass makeApiCall(String URI) {
    ApiResponse<MyResClass> response = webClient.get()
                    .uri(URI)
                    .accept(MediaType.APPLICATION_JSON)
                    .retrieve()
                    .bodyToMono(new ParameterizedTypeReference<ApiResponse<MyResClass>>() {})
                    .block();

    return response.getResults();
}
Run Code Online (Sandbox Code Playgroud)

抛出ajava.lang.ClassCastException并显示以下消息:“java.util.LinkedHashMap 类无法转换为 MyResClass 类”

java spring jackson spring-boot spring-webclient

4
推荐指数
1
解决办法
6336
查看次数

标签 统计

jackson ×1

java ×1

spring ×1

spring-boot ×1

spring-webclient ×1