使用Jackson序列化UUID集

时间:2015-12-15 22:26:15

标签: java serialization jackson uuid

我发现杰克逊配备了UUID serizlizer / deserializer,可以像这样使用:

@Data
@NoArgsConstructor
public class MyClass {

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

}

然后在ObjectMapper上使用MyClass将正确序列化/反序列化myUUID字段。

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

我知道我可以通过扩展JsonSerializer / JsonDeserializer来创建自己的序列化程序/反序列化程序,但这会让人觉得很烦。我可以使用另一种解决方案吗?我也没有选择使用我的课程配置ObjectMapper,因为我无法访问ObjectMapper。我正在使用Amazon SWF,它会自动使用Jackson。

1 个答案:

答案 0 :(得分:6)

杰克逊应该自动使用UUID序列化器,反序列化器,因此不需要注释。

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