java - 手动实现 Jackson 序列化会忽略注释

标签 java json spring-mvc jackson

当使用 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/

相关文章:

java - 从 Java 中的哈希表替换字符串中的值

java - JVM 参数 -Xms 和 -Xss

java - Java中删除对象

java - 在 JSF 自定义 validator 中区分 ajax 请求和完整请求

java - 通过 Spring Controller 映射图像文件

spring - Rest Template 自定义异常处理

spring - 如何在 Spring @Validate 唯一的用户名?

arrays - 将哈希表转换为 json 后 Powershell 缺少数组

jquery - 如何在 Django View 中使用 ajax POST 解析 json 数据

ajax - 在 Chrome 中使用本地文件的 jQuery getJSON 问题