简短的版本:
我使用的泽西1.17和杰克逊2.1.4,但新泽西州是忽略每一个杰克逊的注释,我使用。 为什么!? 有没有人遇到同样的问题?
长版:
我有一个使用泽西1.17和杰克逊1.9.2,我用的是@JsonManagedReference和@JsonBackReference注解来解决双向关系的问题,一切工作正常RESTful Web服务。
有一天,我看到了2.1.4版本的杰克逊,包括在@JsonIdentityInfo注释这似乎是对我的问题的最佳解决方案,所以我改变的jar文件杰克逊2.1.4。 然而,有前途的@JsonIdentityInfo注释不工作和泽西岛完全忽略它,有点调试和修改代码后,我发现,即使是以前@JsonManagedReference和@JsonBackReference注释被忽略新泽西州。 如此看来,新泽西是完全无视杰克逊2.1.4注解。 为什么!? 有没有人遇到同样的问题?
正如指出http://wiki.fasterxml.com/JacksonAnnotations :
重要提示:杰克逊1.x和2.x注释住在不同的Java和Maven包:看到杰克逊2.0完整的解释:
- 1.x的注解是Java包
org.codehaus.jackson.annotate
,杰克逊核心罐子 - 2.x的注解是Java包
com.fasterxml.jackson.annotation
,在“杰克逊-数据绑定”罐子。
所以可能是一个“进口相关”的问题。 另一个原因(如已被@ HiJon89说明)是使用权JacksonJsonProvider版本。 2.x版它同时插入“杰克逊JAXRS JSON的提供者”与“泽西核”相结合自动注册。
我目前正在更新到2.1.4杰克逊(从1.9.2球衣所需的相关项)为:
后者罐子有一个文件“META-INF /服务/ javax.ws.rs.ext.MessageBodyWriter”告诉球衣什么类的行为作为一个供应商。
所以,我没有其他的提醒,而不是仔细检查,你没有老罐子了classpath中。
在我的情况杰克逊注释是因为proguard相关的忽视