您可以自定义自己HttpMessageConverter
来支持这一点,就像我这样做,添加spring.http.converters.preferred-json-mapper=gson
到application.properties
配置文件中,结果建议如下:
@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);
}
}
或自定义HttpMessageConverter
这样的:
@Configuration
public class BeanConfiguration {
@Bean
public HttpMessageConverter resultToJsonConverter() {
return new GsonHttpMessageConverter();
}
}
希望能帮到你。:)