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

Can not write a field name, expecting a value

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

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

我创建了一个存储库来重现我遇到的问题。当您禁用该模块时,您可以看到它工作正常。当您将 jackson 版本更改为 2.8.x(最新的 运行ge 是 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.