Spring Boot 自定义Jackson ObjectMapper,你学会了吗?

在Spring Boot Web 项目中,当使用JSON格式接收数据和返回数据的时候,Spring Boot 默认使用一个ObjectMapper实例来序列化响应和反序列化请求。

在本文中,我们将看看配置序列化和反序列化选项的最常用方法。

默认配置

默认情况下,Spring Boot的配置将禁用以下配置项。

MapperFeature.DEFAULT_VIEW_INCLUSIONDeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIESSerializationFeature.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"

}

我们希望排除空值,并有一个自定义的日期格式(dd-MM-yyyy HH:mm)。这就是我们的响应结果。

{

"brand": "javazzz",

"date": "06-11-2022 10:34"

}

在使用Spring Boot时,我们可以选择定制默认的ObjectMapper或覆盖它。我们将在接下来的章节中介绍这两个选项。

自定义默认的ObjectMapper

在本节中,我们将看到如何定制Spring Boot使用的默认ObjectMapper。

1.应用程序属性和自定义 Jackson 模块

配置映射器的最简单方法是通过应用程序属性。

下面是配置的一般结构。

spring.jackson.

THE END
Copyright © 2024 亿华云