Когда мы перешли с Jackson версии 2.8.9 на 2.9.8, у нас возникли проблемы с сериализацией данных в формате CBOR. Как оказалось, используемый нами модуль Джексона вызывает проблемы в этой новой версии. Эти проблемы начинаются с версии 2.9.0.
Я создал репозиторий, который воспроизводит проблему, и обнаружил, что когда я отключил наши пользовательские TemporalAmountModule
проблемы исчезли. Я не писал TemporalAmountModule
сам, но похоже, что Custom Serializer и Deserializer являются ключевым фактором. Они не представляют никакого сложного кода, но я не совсем понимаю, почему они больше не работают должным образом, потому что я не знаком с сериализаторами и десериализаторами.
Я сделал репозиторий, который воспроизводит мою проблему. Когда вы отключите модуль, вы увидите, что он работает правильно. Когда вы меняете версию Джексона на 2.8.x (последняя в этом диапазоне - 2.8.11), вы также можете видеть, что она работает правильно.
https://github.com/Archcry/reproduce-jackson-error
Ожидаемый результат должен быть таким же, как и в версии 2.8.9 (или 2.8.11 в этом отношении). Джексон не должен нарушать какую-либо функциональность в выпуске минорной версии, но он может осудить определенные методы (что они и сделали). Устаревшие методы - не те, которые вызывают проблемы, хотя, потому что я попытался обновить их, но закончил с тем же самым результатом. Фактическим результатом на данный момент является ошибка: Can not write a field name, expecting a value
.