我有一个枚举,它取自导入到我的项目中的编译库。当包含此枚举的对象作为 api 响应发送时,它包含枚举常量,例如:
"attestation": "DIRECT"
我希望它是:
"attestation": "direct"
不幸的是,我无法更改枚举类文件并覆盖 toString 方法或执行任何类似的操作。
所以我为它编写了一个自定义序列化器:
public class AttestationConveyancePreferenceSerializer extends StdSerializer<AttestationConveyancePreference> {
public AttestationConveyancePreferenceSerializer() {
this(null);
}
public AttestationConveyancePreferenceSerializer(Class<AttestationConveyancePreference> t) {
super(t);
}
@Override
public void serialize(AttestationConveyancePreference acp, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
jsonGenerator.writeStartObject();
jsonGenerator.writeFieldName("attestation");
jsonGenerator.writeString(acp.getValue());
jsonGenerator.writeEndObject();
}
}
但现在我得到的回复是:
"attestation": {
"attestation": "direct"
},
有没有办法让物体变平?
无需创建自定义序列化器,您可以使用特定的注释:
enum Attestation {
@JsonProperty("direct")
DIRECT;
}