有没有办法覆盖或更新泽西岛的杰克逊版本?

时间:2010-07-12 19:33:58

标签: json maven-2 jersey jackson

我们正在尝试使用Jackson 1.5来利用它提供的一些多态处理功能,但看来Jersey带来了它自己过时的Jackson版本(1.1.1)。在测试Jersey序列化JSON时,我们得到的结果与在单元测试中手动序列化时的结果不同。

{"id":"40","ticketProps":[{"id":"28","field":{"id":"28","name":"WXYZ","strict":"false","valueType":"STRING"},"value":"W"},{"id":"29","field":{"id":"29","name":"SEAT","strict":"false","valueType":"STRING"},"value":"4A"}]}

{"id":"40","ticketProps":[{"id":"28","field":{}},{"id":"29","field":{}}],"name":null}

不幸的是,使用Jackson 1.1.1不是一种选择。有没有办法让泽西岛使用杰克逊1.5?正考虑尝试在Jersey Config课程中设置它......或者

2 个答案:

答案 0 :(得分:1)

如果Jersey的maven POM不允许你将Jackson依赖项与Jersey依赖项分开,那么你可以手动获取各个JAR,换掉1.1.x的Jackson 1.5.x JAR。之一。

请注意,不能保证Jersey会使用较新的Jackson版本。杰克逊的API在1.1版本中发生了很大变化。

答案 1 :(得分:0)

你没有提供太多细节(特别是关于你的运行时环境)所以我将只讨论问题的maven部分:在dependencyManagement部分声明Jackson的版本1.5以强制收敛其他依赖杰克逊作为依赖。

这将在运行时工作留给读者练习:)

为了记录,我们可以在V3.1JerseyOnePager中阅读:

  

泽西岛目前正在使用GlassFish 3.0中的Jackson 1.1。该版本将在3.1中升级到最新的稳定版本(目前为1.5.2)。