I have an enum that's taken from a compiled library I imported into my project. When an object containing this enum is sent as an api response it contains the enum constant, like:
"attestation": "DIRECT"
I would like it as:
"attestation": "direct"
unfortunatly I can't change the enum class file and override the toString method or do anything similar.
So I've written a custom serializer for it:
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();
}
}
but now in the response I get:
"attestation": {
"attestation": "direct"
},
is there a way to flatten the object?
Just write the value directly without creating an object:
@Override
public void serialize(AttestationConveyancePreference acp, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
jsonGenerator.writeString(acp.getValue());
}