I use Java 8 application based on springboot and gradle and i try to suppress all null values into my JSON request body :
{"typePersonne":"Adherent","adressePrincipale":{"ligne1":null,"ligne2":null}
I have create interceptor to see my json query :
public class RequestResponseLoggingInterceptor implements ClientHttpRequestInterceptor {
private final org.slf4j.Logger log = LoggerFactory.getLogger(this.getClass());
private void logRequest(final HttpRequest request, final byte[] body) throws IOException {
if (log.isDebugEnabled()) {
log.debug("===========================request begin================================================");
log.debug("URI : {}", request.getURI());
log.debug("Method : {}", request.getMethod());
log.debug("Headers : {}", request.getHeaders());
log.debug("Request body: {}", new String(body, "UTF-8"));
log.debug("==========================request end================================================");
}
}
private void logResponse(final ClientHttpResponse response) throws IOException {
if (log.isDebugEnabled()) {
log.debug("============================response begin==========================================");
log.debug("Status code : {}", response.getStatusCode());
log.debug("Status text : {}", response.getStatusText());
log.debug("Headers : {}", response.getHeaders());
log.debug("Response body: {}", StreamUtils.copyToString(response.getBody(), Charset.defaultCharset()));
log.debug("=======================response end=================================================");
}
}
@Override
public ClientHttpResponse intercept(final HttpRequest request, final byte[] body, final ClientHttpRequestExecution execution) throws IOException {
logRequest(request, body);
final ClientHttpResponse response = execution.execute(request, body);
logResponse(response);
return response;
}
}
How can i suppress all key corresponding to the null values when i call the API ?
final HttpEntity<?> httpEntity = new HttpEntity<>(adherent, headersCompleted);
responseEntity = restTemplate.exchange(urlComplete, HttpMethod.PUT, httpEntity,String.class);
Thanks :)