![](/img/trans.png)
[英]Needed to filter null values from JSON response in spring boot project
[英]Spring WebClient filter Null from Json Request
我正在使用 Spring WebClient Api 进行 rest Z8A5DA52ED126447D35AZE70C05A 调用。
我有一个实体对象—— JobInfo作为我的 POST 请求负载。
下面的 Rest API 失败,因为 JobInfo 的某些属性是null 。
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 属性,使其无法通过 rest 调用发送。
我知道这可以通过在 JobInfo class 上包含以下注释来轻松实现。
@JsonInclude(JsonInclude.Include.NON_NULL)
但是JobInfo来自第三方 Jar,所以我无法触摸这个 class。
有没有办法可以在 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();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.