们转 json 时,是不希望有这些 null 出现的,比如我们期望所有的 null 在转 json 时都变成 “” 这种空字符串,那怎么做呢?在 Spring Boot 中,我们做一下配置即可,新建一个 jackson 的配置类:
时间: 2024-10-23 16:12:03 浏览: 22
当你想要在将Java对象转换为JSON时,避免`null`值出现,可以利用Jackson库提供的自定义序列化处理。在Spring Boot中,你可以创建一个自定义的ObjectMapper,并配置它来处理null值。以下是步骤:
1. 首先,你需要添加Jackson依赖到你的Spring Boot项目中。如果你还没有添加,可以在`pom.xml`或`build.gradle`文件中添加:
```xml
<!-- Maven -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<!-- Gradle (for example) -->
implementation 'com.fasterxml.jackson.core:jackson-databind'
```
2. 创建一个名为`JsonMapperConfig.java`或类似名称的配置类:
```java
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
public class JsonMapperConfig {
public static ObjectMapper customObjectMapper() {
ObjectMapper mapper = new ObjectMapper();
// 设置当遇到null值时将其序列化为""(空字符串)
mapper.configure(SerializationFeature.WRITE_NULL_MAP_VALUES, true);
mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); // 如果你想让空对象不序列化,可以设置这个
return mapper;
}
}
```
在这个配置类中,我们设置了`WRITE_NULL_MAP_VALUES`属性为`true`,这会使得所有null字段在序列化时都被替换为空字符串。
3. 现在,在需要使用这个自定义序列化的场景下,如Controller、Service等地方,注入并使用`customObjectMapper()`方法:
```java
@Autowired
private JsonMapperConfig.JsonMapperConfig jsonMapperConfig;
public String toJson(MyObject obj) {
return jsonMapperConfig.customObjectMapper().writeValueAsString(obj);
}
```
阅读全文