Вы можете реализовать свой собственный org.codehaus.jackson.map.DeserializerProvider
, который расширяет org.codehaus.jackson.map.deser.StdDeserializerProvider
Джексона и метод перезаписи _createDeserializer
:
import org.codehaus.jackson.map.SerializerProvider;
import org.codehaus.jackson.map.deser.StdDeserializerProvider;
import org.codehaus.jackson.map.DeserializationConfig;
...
class MyDeserializerProvider extends StdDeserializerProvider {
@Override
protected JsonDeserializer<Object> _createDeserializer(DeserializationConfig config, JavaType type, BeanProperty property) throws JsonMappingException {
if (type.isMapLikeType()) { // (1)
return this._factory.createBeanDeserializer(config, this, type, property);
} else {
return super._createDeserializer(config, type, property);
}
}
}
(1) использовать условие if, которое соответствует вашим потребностям
Пользовательский десериализатор зарегистрирован непосредственно в ObjectMapper:
ObjectMapper om = new ObjectMapper();
om.setDeserializerProvider(new MyDeserializerProvider());
Я проверял это с Джексоном 1.9.11.