gpt4 book ai didi

java - 使用 Jackson 序列化枚举

转载 作者:IT老高 更新时间:2023-10-28 11:35:39 25 4
gpt4 key购买 nike

我有一个下面描述的枚举:

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....
}

我用我的 Controller 返回枚举数组 (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();
}
}

关于java - 使用 Jackson 序列化枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7766791/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com