Jackson 1.x 到 2.x 以及向后兼容的含义
Jackson 1.x to 2.x and the meaning of backwards compatibility
迫不得已,我需要从 Jackson 1.x 升级到 2.x。看了release的说明后,觉得升级就好了,只要修改必要的代码即可:
http://wiki.fasterxml.com/JacksonRelease20
然而,事后我意识到,如果我们有升级前的数据流回服务,我仍然需要能够反序列化使用 1.x 版本序列化的数据,这一定会发生。
Jackson 2.x 适合这个吗?我知道 2.x 需要重新编译,但它仍然可以处理旧的序列化格式吗?
因此,您的情况是使用 Jackson 1 序列化的数据将由 Jackson 2 读取,这应该不是问题,因为两者都理解 JSON 格式。
您可能有基于注释和层次结构的自定义,即使是这种情况,Jackson 1 几乎支持所有内容,Jackson 2 也应该支持(这就是向后兼容性发挥作用的地方)。
在远程情况下,你有一些只能用 Jackson 1 反序列化的东西,你仍然可以在你的项目中进行滚动升级,Jackson 的家伙在这种情况下做得非常出色,他们将所有包名称更改为com.fasterxml.jackson
来自旧的 org.codehaus.jackson
,这意味着两个版本都可以存在于您的类路径中,允许您根据优先级或增量升级。
我提到的3个场景我都有经验,因为我们的项目以前使用Jackson 1,现在我们将它们全部转移到最新最好的。
希望对您有所帮助,
何塞·路易斯
迫不得已,我需要从 Jackson 1.x 升级到 2.x。看了release的说明后,觉得升级就好了,只要修改必要的代码即可:
http://wiki.fasterxml.com/JacksonRelease20
然而,事后我意识到,如果我们有升级前的数据流回服务,我仍然需要能够反序列化使用 1.x 版本序列化的数据,这一定会发生。
Jackson 2.x 适合这个吗?我知道 2.x 需要重新编译,但它仍然可以处理旧的序列化格式吗?
因此,您的情况是使用 Jackson 1 序列化的数据将由 Jackson 2 读取,这应该不是问题,因为两者都理解 JSON 格式。
您可能有基于注释和层次结构的自定义,即使是这种情况,Jackson 1 几乎支持所有内容,Jackson 2 也应该支持(这就是向后兼容性发挥作用的地方)。
在远程情况下,你有一些只能用 Jackson 1 反序列化的东西,你仍然可以在你的项目中进行滚动升级,Jackson 的家伙在这种情况下做得非常出色,他们将所有包名称更改为com.fasterxml.jackson
来自旧的 org.codehaus.jackson
,这意味着两个版本都可以存在于您的类路径中,允许您根据优先级或增量升级。
我提到的3个场景我都有经验,因为我们的项目以前使用Jackson 1,现在我们将它们全部转移到最新最好的。
希望对您有所帮助,
何塞·路易斯