定义一个枚举类型
public enum Type {
TYPE1(1, "Type A"), TYPE2(2, "Type 2");
private Integer id;
private String name;
private Type(final Integer id, final String name) {
this.id = id;
this.name = name;
}
// getters and setters
}
通过Jackson序列化
new ObjectMapper().writeValueAsString(Type.TYPE1);
默认的序列化结果为: "TYPE1", 想要结果以对象形式显示的结果:
{"name":"Type A","id":1}
可以用下面的方法可以实现:
@JsonFormat(shape = JsonFormat.Shape.OBJECT)
@JsonFormat 注解Enum,2.1.2开始有此注解
@JsonFormat(shape = JsonFormat.Shape.OBJECT)
public enum Type { ... }
JsonSerializer
自定义JsonSerializer处理序列化过程
public class TypeSerializer extends JsonSerializer<Type> {
public void serialize
(Type value, JsonGenerator generator, SerializerProvider provider)
throws IOException, JsonProcessingException {
generator.writeStartObject();
generator.writeFieldName("id");
generator.writeNumber(value.getId());
generator.writeFieldName("name");
generator.writeString(value.getName());
generator.writeEndObject();
}
}
然后在枚举中声明使用自定义的JsonSerializer
@JsonSerialize(using = TypeSerializer.class)
public enum Type { ... }

本文介绍了如何在Jackson中配置枚举类型以实现序列化为对象形式。默认情况下,枚举序列化为字符串,但通过使用`@JsonFormat(shape = JsonFormat.Shape.OBJECT)`注解和自定义`JsonSerializer`,可以将枚举序列化为包含更多信息的对象。
966

被折叠的 条评论
为什么被折叠?



