SpringBoot统一将返回数据由驼峰命名转下划线

编写重写了 WebMvcConfigurationSupport 的配置类:

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;

import java.util.List;
import java.util.TimeZone;

@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {

    @Override
    protected 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;
            }
        }
    }
}

另一种方式:重新注入 Jackson2ObjectMapperBuilderCustomizer

package com.liby.visual.model.config;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;

@Configuration
public class AdditionalConfig {

    @Bean
    public Jackson2ObjectMapperBuilderCustomizer customJackson() {
        return new Jackson2ObjectMapperBuilderCustomizer() {

            @Override
            public void customize(Jackson2ObjectMapperBuilder jacksonObjectMapperBuilder) {
                jacksonObjectMapperBuilder.serializationInclusion(JsonInclude.Include.NON_NULL);
                jacksonObjectMapperBuilder.failOnUnknownProperties(false);
                jacksonObjectMapperBuilder.propertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE);
            }

        };
    }

}

以上两种方式都可以实现统一将返回的json数据格式由驼峰命名转下划线。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spring Boot开发中,我们经常需要将JSON对象换为Java对象或反之亦然。但是,在JSON和Java对象之间换的过程中,往往会遇到下划线驼峰命名风格的差异问题。这个时候,我们可以使用Spring Boot自带的Jackson库进行换。下面我将详细介绍如何在Spring Boot中使用Jackson库进行下划线驼峰格式的换。 1. 下划线换成驼峰Spring Boot中,使用Jackson库进行下划线驼峰命名格式的换,需要在配置文件中进行配置,首先我们需要在application.yaml配置文件中添加以下内容: ```yaml # 进行下划线驼峰 spring: jackson: property-naming-strategy: com.fasterxml.jackson.databind.PropertyNamingStrategy$SnakeCaseStrategy ``` 添加这段配置代码后,就可以实现下划线驼峰。在进行Java对象与JSON字符串之间的换时,JSON字符串的下划线将会自动换为Java对象驼峰命名格式,例如,原本`user_name`的JSON字段在Java对象中将会变成`userName`。 2. 驼峰换成下划线 在进行Java对象与JSON字符串之间的换时,我们也可以将Java对象中的驼峰命名格式换为JSON字符串中的下划线。要实现这个功能,我们需要在配置文件中加入以下代码: ```yaml # 进行驼峰下划线 spring: jackson: property-naming-strategy: com.fasterxml.jackson.databind.PropertyNamingStrategy$SNAKE_CASE ``` 这时候,在进行Java对象与JSON字符串之间的换时,Java对象中的驼峰命名格式就会被自动换成JSON字符串中的下划线格式,例如,Java对象中的`userName`字段会自动被换成JSON字符串中的`user_name`。 总结: 在Spring Boot中,使用Jackson库进行下划线驼峰命名格式的换,只需要在application.yaml配置文件中添加一段内容即可。设置`com.fasterxml.jackson.databind.PropertyNamingStrategy$SnakeCaseStrategy`可以将下划线换成Java对象驼峰命名格式,而将`com.fasterxml.jackson.databind.PropertyNamingStrategy$SNAKE_CASE`设置为属性命名策略,则可以将Java对象中的驼峰命名格式自动换成JSON字符串中的下划线格式。这样的配置可以很方便地适应不同的数据接口和Java对象

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱打斯诺克的码农飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值