当使用 Jackson 默认编写器时,如下所示:
protected static String getAsJson(Class clazz, Object object) throws IOException {
ObjectWriter ow = objectMapper.writerWithType(clazz);
return ow.writeValueAsString(object);
下面的注释将被忽略:
@JsonDeserialize(using = LocalDateDeserializer.class)
@JsonSerialize(using = LocalDateSerializer.class)
@Type(type = "org.jadira.usertype.dateandtime.joda.PersistentLocalDate")
private LocalDate date;
如何手动实现与 springs @Responsebody
一起使用的默认 jackson 序列化(与注释配合使用效果良好)?
最佳答案
Jackson 只识别它知道的注释:我猜测在您的示例中,@JsonSerialize
和 @JsonDeserialize
是 Jackson 注释(来自 Jackson databind 包),但是@Type
是不同的东西(也许由 Spring MVC 提供)。
这意味着其他东西将使用该注释(Spring)。
可以扩展JacksonAnnotationIntrospector
来识别其他注释类型,因此这可能是您可以做的事情。有一种方法可以查找您可以覆盖的显式类型覆盖。
关于java - 手动实现 Jackson 序列化会忽略注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18463234/