@Test public void deserializerByType() throws JsonMappingException { JsonDeserializer<Date> deserializer = new DateDeserializers.DateDeserializer(); ObjectMapper objectMapper = Jackson2ObjectMapperBuilder.json() .modules(new ArrayList<>()) // Disable well-known modules detection .deserializerByType(Date.class, deserializer).build(); assertTrue(getDeserializerFactoryConfig(objectMapper).hasDeserializers()); Deserializers deserializers = getDeserializerFactoryConfig(objectMapper).deserializers().iterator().next(); assertSame(deserializer, deserializers.findBeanDeserializer(SimpleType.construct(Date.class), null, null)); }
public JsonDeserializer<?> findDefaultDeserializer(DeserializationContext paramDeserializationContext, JavaType paramJavaType, BeanDescription paramBeanDescription) { Class localClass = paramJavaType.getRawClass(); String str = localClass.getName(); if ((localClass.isPrimitive()) || (str.startsWith("java."))) { if (localClass == CLASS_OBJECT) return UntypedObjectDeserializer.instance; if ((localClass == CLASS_STRING) || (localClass == CLASS_CHAR_BUFFER)) return StringDeserializer.instance; if (localClass == CLASS_ITERABLE) { TypeFactory localTypeFactory = paramDeserializationContext.getTypeFactory(); JavaType localJavaType; if (paramJavaType.containedTypeCount() > 0) localJavaType = paramJavaType.containedType(0); else localJavaType = TypeFactory.unknownType(); return createCollectionDeserializer(paramDeserializationContext, localTypeFactory.constructCollectionType(Collection.class, localJavaType), paramBeanDescription); } JsonDeserializer localJsonDeserializer1 = NumberDeserializers.find(localClass, str); Object localObject = localJsonDeserializer1; if (localJsonDeserializer1 == null) { JsonDeserializer localJsonDeserializer2 = DateDeserializers.find(localClass, str); localObject = localJsonDeserializer2; if (localJsonDeserializer2 == null) localObject = JdkDeserializers.find(localClass, str); } return localObject; } if (str.startsWith("com.fasterxml.")) return JacksonDeserializers.find(localClass); return null; }
@Override public Date deserialize(JsonParser jp, DeserializationContext ctxt) throws java.io.IOException { try { DateDeserializers.DateDeserializer dateDeserializer = new DateDeserializers.DateDeserializer(); return dateDeserializer.deserialize(jp, ctxt); } catch (IOException e) { //ignore } return new Date(0L); }