java - 不能写字段名,需要一个值

标签 java jackson temporal immutables-library cbor

当我们从 Jackson 版本 2.8.9 切换到 2.9.8 时,我们在以 CBOR 格式序列化数据时遇到了一些问题。事实证明,我们一直在使用的自定义 Jackson 模块在这个较新的版本中造成了麻烦。这些问题从版本 2.9.0 开始。

我创建了一个重现该问题的存储库,发现当我禁用我们的自定义 TemporalAmountModule 问题时,问题就消失了。我自己没有编写 TemporalAmountModule,但看起来 Custom Serializer 和 Deserializer 是罪魁祸首。这些没有引入任何复杂的代码,但我真的不明白为什么它们不再正常工作,因为我不熟悉序列化器和反序列化器。

我创建了一个存储库来重现我遇到的问题。当您禁用该模块时,您可以看到它工作正常。当您将 jackson 版本更改为 2.8.x(该范围内的最新版本是 2.8.11)时,您可以看到它也能正常工作。

https://github.com/Archcry/reproduce-jackson-error

预期结果应与版本 2.8.9(或 2.8.11)中的结果相同。 Jackson 不应破坏次要版本发布中的任何功能,但它可能会弃用某些方法(他们确实这样做了)。不推荐使用的方法并不是导致问题的方法,因为我尝试更新它们但最终得到了相同的结果。目前的实际结果是错误提示 Can not write a field name, expecting a value

最佳答案

问题已在 GitHub 上解决,请参阅 https://github.com/FasterXML/jackson-databind/issues/2320

编辑: 问题正在处理中,一开始就不应该发生。

编辑 2: 问题已不再处理,因为缺乏上下文,很难重现。

Unfortunately while I can see the exception from sample project, I am not able to construct simpler version with combinations. I wonder if that might be related to use of immutables, annotations. So I think I'll leave this as-is for now.

关于java - 不能写字段名,需要一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56018579/

相关文章:

java - Glassfish - EAR 包的 3.1.2 部署需要很长时间

jackson - 使用 Jackson MixIn 添加属性?

java - @JsonProperty Json对象里面的Json对象

matlab - datetime matlab 不同时间分辨率

java - 如何将 System.currentMillis 秒转换为 TemporalAccessor

java - 无法实例化 Rectangle 类型

java - 如何通过hashmap向Google map API添加多个标记? - (安卓)

java - 如何动态改变线条的颜色?

java - Jackson DataBing 版本 2.9.5 无法将对象解析为 JSON 字符串

machine-learning - 按时对文档进行聚类