我发现杰克逊配备了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。
答案 0 :(得分:6)
杰克逊应该自动使用UUID序列化器,反序列化器,因此不需要注释。
但是对于注释的使用,正如所建议的那样,(de)内容序列化器(而不是值本身!)确实需要使用注释的contentUsing
属性 - 否则Jackson将尝试应用给定(de)序列化器直接为值,报告不匹配,