用Jackson序列化枚举
我有一个下面的枚举:
public enum OrderType { UNKNOWN(0, "Undefined"),
TYPEA(1, "Type A"),
TYPEB(2, "Type B"),
TYPEC(3, "Type C");
private Integer id;
private String name;
private WorkOrderType(Integer id, String name) {
this.id = id;
this.name = name;
}
//Setters, getters....
}
我用控制器(new OrderType[] {UNKNOWN,TYPEA,TYPEB,TYPEC}
;)返回枚举数组,Spring将其序列化为以下json字符串:
["UNKNOWN", "TYPEA", "TYPEB", "TYPEC"]
强迫Jackson像POJO一样序列化枚举的最佳方法是什么?例如:
[ {"id": 1, "name": "Undefined"},
{"id": 2, "name": "Type A"},
{"id": 3, "name": "Type B"},
{"id": 4, "name": "Type C"}
]
我使用了不同的注解,但无法获得这样的结果。
回答:
终于我找到了解决方案。
我必须用注释枚举@JsonSerialize(using = OrderTypeSerializer.class)
并实现自定义序列化程序:
public class OrderTypeSerializer extends JsonSerializer<OrderType> { @Override
public void serialize(OrderType 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();
}
}
以上是 用Jackson序列化枚举 的全部内容, 来源链接: utcz.com/qa/430209.html