Mam obiektu domeny, która ma mapy:nie mogę znaleźć (mapa) Key Deserializator dla rodzaju [typu prostego, klasa com.comcast.ivr.core.domain.AutoHandlingSlotKey]
private Map<AutoHandlingSlotKey, LinkedHashSet<AutoFunction>> autoHandling;
kiedy serializacji obiektu, otrzymuję to:
"autoHandling" : [ "java.util.HashMap", {
} ],
klucz ta mapa jest zwyczaj obiektu:
public class AutoHandlingSlotKey implements Serializable {
private FunctionalArea slot; // ENUM
private String returnView; // ENUM
Tak, nie jestem pewien, jak rozwiązać ten problem, ja Wciąż dostaję kiedy deserializowania obiektu:
org.codehaus.jackson.map.JsonMappingException: Can not find a (Map) Key deserializer for type [simple type, class com.comcast.ivr.core.domain.AutoHandlingSlotKey]
Czy ktoś może mi pomóc zrozumieć, w jaki sposób rozwiązać ten problem, jeśli robię NIE mieć dostęp do obiektu domeny zmodyfikować?
Po szybkim teście, wydaje mi się, że klucze są serializowane za pomocą ich metody toString, co prawdopodobnie często nie jest tym, czego potrzebujesz. Tworzenie serializera kluczowego wydaje się być dobrą opcją. – Suma
To jest awaryjne, jeśli nic innego nie zostanie znalezione. Istnieją alternatywy: jeśli typ ma publiczny konstruktor z pojedynczym ciągiem, na przykład, który będzie użyty. Lub metoda fabularna z pojedynczym ciągiem, opisana za pomocą '@ JsonCreator'.Spowoduje to usunięcie potrzeby zapisu i zarejestrowania deserializatora klucza niestandardowego. – StaxMan
Świetnie - ale opisujesz deserializer (spróbuję tego). A co z serializerem? W moim przypadku użyto toString (dla klasy przypadku Scala). Jakie są inne opcje serializera, oprócz pisania własnego? – Suma