使用 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 会尝试直接为值应用给定的(反)序列化器,报告不匹配,
我发现 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 会尝试直接为值应用给定的(反)序列化器,报告不匹配,