Tengo un objeto de dominio que tiene un mapa:no puede encontrar un (Mapa) deserializer clave para el tipo [tipo simple, com.comcast.ivr.core.domain.AutoHandlingSlotKey clase]
private Map<AutoHandlingSlotKey, LinkedHashSet<AutoFunction>> autoHandling;
Cuando serializar el objeto, me sale esto:
"autoHandling" : [ "java.util.HashMap", {
} ],
clave de este mapa es un objeto personalizado:
public class AutoHandlingSlotKey implements Serializable {
private FunctionalArea slot; // ENUM
private String returnView; // ENUM
Por lo tanto, no estoy seguro de cómo corregir este problema que seguir recibiendo cuando deserializar el objeto:
org.codehaus.jackson.map.JsonMappingException: Can not find a (Map) Key deserializer for type [simple type, class com.comcast.ivr.core.domain.AutoHandlingSlotKey]
Puede alguien ayudarme a entender cómo corregir este problema si hago NO tener acceso al objeto de dominio para modificar?
Después de una prueba rápida, creo que las claves se serializan utilizando su método toString, que probablemente no sea lo que usted desea. Crear un serializador de claves parece una buena opción. – Suma
Esa es la alternativa si no se encuentra nada más. Hay alternativas: si el tipo tiene un constructor público de cadenas simples, por ejemplo, que se usará. O un método de fábrica de argumento de cadena único anotado con '@ JsonCreator'.Esto eliminará la necesidad de escribir y registrar un deserializador de clave personalizado. – StaxMan
Genial, pero usted describe el deserializador (lo intentaré). ¿Qué pasa con el serializador? En mi caso, se usó String (para una clase de caso Scala). ¿Qué otras opciones hay para el serializador, además de escribir las mías? – Suma