【问题标题】:Serialization of Map.Entry changed while upgrading jackson from 2.2.2 to 2.7.7将杰克逊从 2.2.2 升级到 2.7.7 时,Map.Entry 的序列化发生了变化
【发布时间】:2016-12-08 10:21:53
【问题描述】:

Map.Entry 的序列化

下面是 JSON 与 jackson 2.2.2,同时从控制器返回地图(Spring MVC 4.0.2)

Object {key: 51454, value: "message"}

下面是 JSON 和 jackson 2.7.7 (Spring MVC 4.3.1)

Object {51453: "message"}

由于上述更改,我的 js 崩溃了。不想改js代码,怎么改json响应。

编辑

在杰克逊升级中 Map.Entry 的序列化已根据 GitHub Issue 更改

这破坏了我的 api。

【问题讨论】:

  • 密码是什么?

标签: json spring spring-mvc jackson


【解决方案1】:

Map 的序列化没有改变,所以我认为你的问题陈述不完整。

但是Map.Entry 的序列化确实更改为使用更紧凑的序列化,所以也许您正在明确处理Map.Entry 值? 如果是这样,除了通过自定义序列化程序或使用其他类型之外,没有其他方法可以配置它。但是使用实际的 POJO 而不是 Map.Entry 可能有意义。

【讨论】:

  • 你是对的 Map.Entry 的序列化已经改变,我们在 js 代码中大量使用 key 和 value。我正试图弄清楚我们如何才能采用这种变化。
  • 通常可能希望以较小的步骤解决升级问题。我认为这种情况下的变化是在 2.5.0 中(问题 #565?),所以首先升级到 2.4.6 可能是有意义的。不会解决具体问题,您可能需要自定义序列化程序。但可以帮助确保没有其他问题区域。
  • 为 Map.Entry 编写自定义序列化程序后我的问题解决了。
猜你喜欢
  • 2018-01-14
  • 1970-01-01
  • 1970-01-01
  • 2011-07-03
  • 2020-12-24
  • 2015-04-07
  • 1970-01-01
  • 2016-09-13
  • 1970-01-01
相关资源
最近更新 更多