定义一个枚举类型
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 { ... }