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;
}
}