Spring Boot整合Gson

Pom配置Gson

首先去掉本来自带的jackson,再加上Gson依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-json</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
        </dependency>

测试类

User实体类:

public class User {
    private String username;
    private Date birthday;
    Get set方法省略

UserController类:

@RestController
public class UserController {
    @GetMapping("/user")
    public User getuser(){
        User user = new User();
        user.setUsername("dong");
        user.setBirthday(new Date());
        return user;
    }
}

application.properties配置:

  • 时间序列化
    spring.gson.date-format=yyyy-MM-dd HH:mm:ss
  • 是否禁用 HTML的转义字符
    spring.gson.disable-html-escaping=true
  • 序列化是否排除内部类
    spring.gson.disable-inner-class-serialization=false
  • 是否禁用复杂映射键
    spring.gson.enable-complex-map-key-serialization=
  • 是否排除没有@Expose注解的字段
    spring.gson.exclude-fields-without-expose-annotation=
  • 序列化时字段名的命名策略
    spring.gson.field-naming-policy=
  • 在输出之前加入一段特殊的文本来生成一个不可执行的json
    spring.gson.generate-non-executable-json=
  • 是否放宽解析不符合fc4627的规范
    spring.gson.lenient=
  • long类型序列化的策略
    spring.gson.long-serialization-policy=
  • 格式化json
    spring.gson.pretty-printing=
  • 是否序列化空字段
    spring.gson.serialize-nulls=

全局配置

编写config类,根据GsonAutoConfiguration

@Bean
	@ConditionalOnMissingBean
	public GsonBuilder gsonBuilder(List<GsonBuilderCustomizer> customizers) {
		GsonBuilder builder = new GsonBuilder();
		customizers.forEach((c) -> c.customize(builder));
		return builder;
	}

	@Bean
	@ConditionalOnMissingBean
	public Gson gson(GsonBuilder gsonBuilder) {
		return gsonBuilder.create();
	}

重写上述任意一个类:

  • GsonBuilder

@Configuration
public class WebMvcConfig {
    @Bean
    GsonBuilder getBulid(){
        GsonBuilder gsonBuilder = new GsonBuilder();
        gsonBuilder.setDateFormat("yyyy-MM-dd HH:mm:ss");
        return gsonBuilder;
    }
}
  • Gson:
@Configuration
public class WebMvcConfig {
    @Bean
    Gson getGson(){
        GsonBuilder gsonBuilder = new GsonBuilder();
        gsonBuilder.setDateFormat("yyyy-MM-dd HH:mm:ss");
        Gson gson = gsonBuilder.create();
        return gson;
    }
}
  • GsonHttpMessageConverter
@Configuration
public class WebMvcConfig {

    @Bean
    GsonHttpMessageConverter gsonHttpMessageConverter(){
        GsonHttpMessageConverter converter = new GsonHttpMessageConverter();
        GsonBuilder gsonBuilder = new GsonBuilder();
        gsonBuilder.setDateFormat("yyyy-MM-dd HH:mm:ss");
        converter.setGson(gsonBuilder.create());
        return converter;
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值