Serialize Set of UUID using Jackson
Jackson should automatically use UUID serializers, deserializers, so your annotations should not be necessary.
But as to annotation usage, as suggested, (de)serializer for content (instead of value itself!) does need to use contentUsing
property of the annotation -- otherwise Jackson will try to apply given (de)serializer directly for the value, with reported mismatch,
Brian Schlenker
Updated on June 04, 2022Comments
-
Brian Schlenker almost 2 years
I found that jackson comes equipped with a UUID serizlizer/deserializer that can be used like this:
@Data @NoArgsConstructor public class MyClass { @JsonSerialize(using=UUIDSerializer.class) @JsonDeserialize(using=UUDIDeserializer.class) private UUID myUUID; }
And then using
ObjectMapper
onMyClass
will correctly serialize/deserialize themyUUID
field.However, my class has a set of UUIDs that I want to serialize. I tried annotating the field the same way as above, but it complains that Set cannot be converted to UUID (as I half expected).
I know I can create my own serializer/deserializers by extending
JsonSerializer
/JsonDeserializer
, but this feels hacky. Is there another solution I can use? I also don't have the option to configure theObjectMapper
with my classes, since I don't have access to theObjectMapper
. I am using Amazon SWF and it automatically uses Jackson.