Spring Boot——统一设置返回Json数据风格(Java驼峰命名法转下划线命名法)解决方案
基本概念
HttpMessageConverter:
org.springframework.http.converter.HttpMessageConverter是一个策略接口接口说明如下:
Strategy interface that specifies a converter that can convert from and to HTTP requests and responses.
简单说就是 HTTP request (请求)和response (响应)的转换器。
API
public class MappingJackson2HttpMessageConverter
extends AbstractJackson2HttpMessageConverterImplementation of
HttpMessageConverterthat can read and write JSON using Jackson 2.x'sObjectMapper.This converter can be used to bind to typed beans, or untyped
HashMapinstances.By default, this converter supports
application/jsonandapplication/*+jsonwithUTF-8character set. This can be overridden by setting thesupportedMediaTypesproperty.The default constructor uses the default configuration provided by
Jackson2ObjectMapperBuilder.Compatible with Jackson 2.9 and higher, as of Spring 5.0.
解决方案
@Configuration
@EnableWebMvc
public class WebMvcConfig extends WebMvcConfigurationSupport {
/**
* 统一输出风格
* See {@link com.fasterxml.jackson.databind.PropertyNamingStrategy.SnakeCaseStrategy} for details.
* @param converters
*/
@Override
public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
for (int i = 0; i < converters.size(); i++) {
if (converters.get(i) instanceof MappingJackson2HttpMessageConverter) {
ObjectMapper objectMapper = new ObjectMapper();
// 统一返回数据的输出风格
objectMapper.setPropertyNamingStrategy(new PropertyNamingStrategy.SnakeCaseStrategy());
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
objectMapper.setTimeZone(TimeZone.getTimeZone("GMT+8"));
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
converter.setObjectMapper(objectMapper);
converters.set(i, converter);
break;
}
}
}
}
运行结果

参考文章
https://blog.csdn.net/limenghua9112/article/details/84976621
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)