Spring 带有 ParameterizedTypeReference 的 WebClient 不工作

Spring WebClient with ParameterizedTypeReference doesn't work

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

@Data
@Jacksonized
@Builder
public class ApiResponse<T> {
    private T results;
}

当我调用以下方法时:

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();
}

a java.lang.ClassCastException 随消息一起抛出:“class java.util.LinkedHashMap 无法转换为 class MyResClass”

删除 @Builder@Jacksonized 注释并重复测试,没有它们似乎工作正常。

P.S。请注意 block() 调用,如果此代码恰好在非阻塞线程上执行,则可能会抛出各种错误!