gpt4 book ai didi

java - Spring WebClient 从 Json 请求中过滤 Null

转载 作者:行者123 更新时间:2023-12-01 17:11:35 31 4
gpt4 key购买 nike

我正在使用 Spring WebClient Api 进行 REST API 调用。

我有一个实体对象 - JobInfo,它充当我的 POST 请求有效负载。

以下 Rest API 失败,因为 JobInfo 的某些属性为空。

private BatchInfo createBulkUploadJob(JobInfo jobInfo) {
return webClient.post()
.uri(URL.concat("/services/data/v47.0/jobs/ingest/"))
.contentType(MediaType.APPLICATION_JSON)
.header("Authorization", "OAuth " + TOKEN)
.bodyValue(jobInfo)
.retrieve()
.bodyToMono(BatchInfo.class)
.block();
}

我需要过滤掉 Null 属性,以免通过其余调用发送它。

我知道这可以通过在 JobInfo 类上包含以下注释来轻松实现。

@JsonInclude(JsonInclude.Include.NON_NULL) 

但是JobInfo来自第三方Jar,所以我无法触及这个类。

有没有办法可以在 webClient 中配置它来过滤掉这个或任何其他选项?

最佳答案

试试这个:

private BatchInfo createBulkUploadJob(JobInfo jobInfo) {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
ExchangeStrategies strategies = ExchangeStrategies
.builder()
.codecs(clientDefaultCodecsConfigurer -> {
clientDefaultCodecsConfigurer.defaultCodecs().jackson2JsonEncoder(new Jackson2JsonEncoder(objectMapper, MediaType.APPLICATION_JSON));
clientDefaultCodecsConfigurer.defaultCodecs().jackson2JsonDecoder(new Jackson2JsonDecoder(objectMapper, MediaType.APPLICATION_JSON));

}).build();

WebClient webClient = WebClient.builder().exchangeStrategies(strategies).build();
return webClient.post()
.uri(URL.concat("/services/data/v47.0/jobs/ingest/"))
.contentType(MediaType.APPLICATION_JSON)
.header("Authorization", "OAuth " + TOKEN)
.bodyValue(jobInfo)
.retrieve()
.bodyToMono(BatchInfo.class)
.block();
}

关于java - Spring WebClient 从 Json 请求中过滤 Null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61424901/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com