Это связано с тем, что структурам данных, таким как Map
, требуется некоторая специальная логика при де-сериализации, и любая библиотека, которая преобразует POJO в JSON, имеет свою собственную обработку объектов, расширяющих интерфейс Map
.
Также SetValuedMap
нуждается в такой обработке, так как значения не могут быть непосредственно прочитаны из полей или около того, но с помощью методов put(..)
и get(..)
(как это делается аналогично в Map
).
НО: SetValuedMap
не реализует интерфейс Map
. Он имеет разницу, например, в типах возвращаемых значений метода put()
, и поэтому они «несовместимы» в этом смысле. Это служебный класс от Apache Commons, а не «стандартная Java».
Поэтому Джексон может не иметь ни малейшего понятия, как десериализовать этот класс. Вам может понадобиться написать собственный де / сериализатор для - например - MultiValuedMap
.