I have following class:
public class Some implements Map<String, Object>{
private Map<String, Object> innerMap;
//implementation that can only set innerMap in constructor and cannot add or remove values
}
The problem is that I cannot deserialize this in jackson correctly. If I serialize without default typing, it is OK, since it is serialized as {"one":"two"} and deserialized correctly (I had to implement deserializer with
return new Some(jp.readValueAs(new TypeReference<HashMap<String,Object>>(){}));
When I use default typing turned on, this is serialized as
["com.class.Some",{"one":"two"}]
But deserialization is throwing
com.fasterxml.jackson.databind.JsonMappingException: Unexpected token (START_OBJECT), expected START_ARRAY: need JSON Array to contain As.WRAPPER_ARRAY type information for class java.util.HashMap
Any thoughts?
This is what I needed - custom deserializer: