我们正在尝试使用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课程中设置它......或者
答案 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)。