jackson 自定义序列化器 序列化枚举
时间: 2024-10-12 16:16:36 浏览: 42
Jackson 是一个流行的 Java JSON 处理库,它允许开发者自定义序列化过程,包括对枚举类型的处理。当需要将枚举值转换成 JSON 格式时,可以创建一个自定义的 EnumSerializer。
例如,假设有一个名为 `Color` 的枚举:
```java
public enum Color {
RED, GREEN, BLUE
}
```
为了自定义其序列化,我们需要创建一个实现了 `JsonSerializer<Color>` 接口的类,并覆盖 `serialize` 方法:
```java
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.SerializerProvider;
import java.io.IOException;
public class CustomColorSerializer extends JsonSerializer<Color> {
@Override
public void serialize(Color value, JsonGenerator gen, SerializerProvider provider) throws IOException {
gen.writeString(value.name());
}
}
```
然后,在 Jackson 配置中注册这个自定义序列化器:
```java
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new SimpleModule().addSerializer(Color.class, new CustomColorSerializer()));
```
现在,当你使用 `mapper.writeValueAsString(Color.RED)` 或者 `mapper.writeValueAsString(Color.GREEN)` 时,`Color` 枚举会序列化为字符串 "RED" 或 "GREEN" 而不是枚举名。
阅读全文