使用 Jackson 序列化一组 UUID

Serialize Set of UUID using Jackson

我发现 jackson 配备了一个 UUID serizlizer/deserializer,可以这样使用:

@Data
@NoArgsConstructor
public class MyClass {

    @JsonSerialize(using=UUIDSerializer.class)
    @JsonDeserialize(using=UUDIDeserializer.class)
    private UUID myUUID;

}

然后在 MyClass 上使用 ObjectMapper 将正确 serialize/deserialize myUUID 字段。

但是,我的 class 有一组我想要序列化的 UUID。我尝试用与上面相同的方式注释该字段,但它抱怨 Set 无法转换为 UUID(正如我预期的那样)。

我知道我可以通过扩展 JsonSerializer/JsonDeserializer 创建我自己的 serializer/deserializers,但这感觉很老套。我可以使用其他解决方案吗?我也没有使用 classes 配置 ObjectMapper 的选项,因为我无权访问 ObjectMapper。我正在使用 Amazon SWF,它会自动使用 Jackson。

Jackson 应该自动使用 UUID 序列化器、反序列化器,因此您的注释应该不是必需的。

但是关于注释的使用,正如建议的那样,内容的(反)序列化程序(而不是值本身!)确实需要使用注释的 contentUsing 属性 —— 否则 Jackson 会尝试直接为值应用给定的(反)序列化器,报告不匹配,