У меня есть объект домена, который имеет карту:Не удается найти (карта) Key десериализатор для типа [простой тип, класс com.comcast.ivr.core.domain.AutoHandlingSlotKey]
private Map<AutoHandlingSlotKey, LinkedHashSet<AutoFunction>> autoHandling;
Когда я сериализовать объект, я получаю это:
"autoHandling" : [ "java.util.HashMap", {
} ],
ключ эта карта является пользовательский объект:
public class AutoHandlingSlotKey implements Serializable {
private FunctionalArea slot; // ENUM
private String returnView; // ENUM
Итак, я не знаю, как исправить эту проблему я продолжать получать, когда я десериализации объекта:
org.codehaus.jackson.map.JsonMappingException: Can not find a (Map) Key deserializer for type [simple type, class com.comcast.ivr.core.domain.AutoHandlingSlotKey]
Может кто-то помочь мне понять, как исправить эту проблему, если я НЕ иметь доступ к объекту домена изменить?
После быстрого теста, я думаю, что ключи сериализуются с использованием метода toString, который, вероятно, часто не то, что вы хотите. Создание ключевого сериализатора кажется хорошим вариантом. – Suma
Это резерв, если ничего не найдено. Существуют альтернативы: если тип имеет публичный конструктор с одним строковым аргументом, например, который будет использоваться. Или метод фабрики с одним строковым аргументом, который аннотируется с помощью '@ JsonCreator'.Это устранит необходимость записи и регистрации настраиваемого десериализатора ключей. – StaxMan
Отлично, но вы описываете десериализатор (я попробую это). Как насчет сериализатора? В моем случае использовался toString (для класса case Scala). Какие еще существуют опции для сериализатора, помимо написания моего собственного? – Suma