3

我们正在尝试使用 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 类或其他东西中......

4

2 回答 2

1

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

请注意,不能保证 Jersey 可以与较新的 Jackson 版本一起使用。Jackson 的 API 在 1.1 版本前后发生了很大变化。

于 2010-07-12T20:11:18.063 回答
0

您没有提供太多详细信息(尤其是关于您的运行时环境),所以我将仅介绍问题的 maven 部分:在该dependencyManagement部分下声明 Jackson 的 1.5 版以强制收敛以杰克逊为依赖项的其他依赖项。

这是否会在运行时工作留给读者作为练习:)

作为记录,这是我们可以在V3.1JerseyOnePager中阅读的内容:

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

于 2010-07-12T22:27:22.993 回答