you may custom yourself HttpMessageConverter
to support this, as i do this , added spring.http.converters.preferred-json-mapper=gson
toapplication.properties
config file, and a result advice like :
@ControllerAdvice
public class CommonResultAdvice implements ResponseBodyAdvice<Object> {
@Override
public boolean supports(MethodParameter methodParameter, Class<? extends HttpMessageConverter<?>> aClass) {
return true;
}
@Override
public Object beforeBodyWrite(Object o, MethodParameter methodParameter, MediaType mediaType, Class<? extends HttpMessageConverter<?>> aClass, ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) {
if (null == o) {
//set http code
serverHttpResponse.setStatusCode(HttpStatus.NO_CONTENT);
return BaseResult.success();
}
if (o instanceof String) {
ObjectMapper mapper = new ObjectMapper();
try {
return mapper.writeValueAsString(BaseResult.success(o));
} catch (JsonProcessingException ignore) {
}
}
if (o instanceof BaseResult) {
return o;
}
return BaseResult.success(o);
}
}
or custom a HttpMessageConverter
like this:
@Configuration
public class BeanConfiguration {
@Bean
public HttpMessageConverter resultToJsonConverter() {
return new GsonHttpMessageConverter();
}
}
hope to help you. :)