在Spring Boot Web 项目中,当使用JSON格式接收数据和返回数据的时候,Spring Boot 默认使用一个ObjectMapper实例来序列化响应和反序列化请求。
在本文中,我们将看看配置序列化和反序列化选项的最常用方法。
默认配置
默认情况下,Spring Boot的配置将禁用以下配置项。
- MapperFeature.DEFAULT_VIEW_INCLUSION
- DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES
- SerializationFeature.WRITE_DATES_AS_TIMESTAMPS。
举个例子
- 客户端将发送一个GET请求到我们的/coffee?name=Javazzz。
- 控制器将返回一个新的Coffee对象。
- Spring将使用ObjectMapper将我们的POJO序列化为JSON。
我们将通过使用String和LocalDateTime对象来示范定制选项。
public class Coffee {
private String name;
private String brand;
private LocalDateTime date;
//getter and setter
}
我们还将定义一个简单的REST控制器来演示序列化。
@GetMapping("/coffee")
public Coffee getCoffee(
@RequestParam(required = false) String brand,
@RequestParam(required = false) String name) {
return new Coffee()
.setBrand(brand)
.setDate(FIXED_DATE)
.setName(name);
}
默认情况下,这将是调用GET http://lolcahost:8080/coffee?brand=javazzz 时的响应。
{
"name": null,
"brand": "javazzz",
"date": "2022-06-16T10:21:35.974"
}