![](/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.