一、前期配置
項目創建後,查看依賴包,會發現使用的是默認的 json:
所以如果想要使用需要首先排除默認的 json 依賴:
此時會發現對應的 json 包已經消失了,然後加入需要的 gson 依賴,這裏會發現不需要寫相應的版本號,因爲也已經納入到了SpringBoot中了
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
</dependency>
二、示例演示
實體類 User:
public class User {
private Integer id;
private String name;
private String address;
private Date birthday;
//get/set 方法省略
}
UserController
@RestController
public class Controller {
@GetMapping(value = "/user")
public User getUser(){
User user = new User();
user.setId(01);
user.setAddress("北京");
user.setName("Yolo");
user.setBirthday(new Date());
return user;
}
}
結果展示:
三、源碼分析
具體過程同:一篇文章帶你深入分析 SpringBoot 中默認的 JSON 解析方式
同樣進入:GsonHttpMessageConvertersConfiguration
可以打斷點自己試驗下
同樣這裏以日期格式化來嘗試自定義 GsonHttpMessageConverter
@Configuration
public class WebMvcConfig {
@Bean
GsonHttpMessageConverter gsonHttpMessageConverter(){
GsonHttpMessageConverter converter = new GsonHttpMessageConverter();
//格式化日期
converter.setGson(new GsonBuilder().setDateFormat("yyyy-MM-dd").create());
return converter;
}
}
同理,可以看出這裏關鍵起作用的其實就是 Gson
進入GsonAutoConfiguration
:
發現這裏同樣可以自定義 Gson ,來實現日期格式化:
@Configuration
public class WebMvcConfig {
@Bean
Gson gson(){
return new GsonBuilder().setDateFormat("yyyy-MM-dd").create();
}
}
所以如果你有一些其他需求,可以自己單獨配置,使用自己定義的 GsonHttpMessageConverter
最後 :