下面列出了com.fasterxml.jackson.databind.type.MapLikeType#com.fasterxml.jackson.databind.KeyDeserializer 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Override
public JsonDeserializer<?> findMapDeserializer(MapType type, DeserializationConfig config, BeanDescription beanDesc,
KeyDeserializer keyDeserializer, TypeDeserializer elementTypeDeserializer,
JsonDeserializer<?> elementDeserializer) throws JsonMappingException {
for (Deserializers deserializers : deserializersList) {
JsonDeserializer<?> deserializer = deserializers.findMapDeserializer(type, config, beanDesc, keyDeserializer, elementTypeDeserializer, elementDeserializer);
if (deserializer != null) {
return deserializer;
}
}
return null;
}
@Override
public JsonDeserializer<?> findMapLikeDeserializer(MapLikeType type, DeserializationConfig config, BeanDescription beanDesc,
KeyDeserializer keyDeserializer, TypeDeserializer elementTypeDeserializer,
JsonDeserializer<?> elementDeserializer) throws JsonMappingException {
for (Deserializers deserializers : deserializersList) {
JsonDeserializer<?> deserializer = deserializers.findMapLikeDeserializer(type, config, beanDesc, keyDeserializer, elementTypeDeserializer, elementDeserializer);
if (deserializer != null) {
return deserializer;
}
}
return null;
}
@Test
public void keyDeserializerInstanceReturnsNull() {
// given
VirtualProperty[] customProperties = new VirtualProperty[0];
Log4j2Lookup valueResolver = new Log4j2Lookup(null);
JacksonHandlerInstantiator handlerInstantiator = createTestHandlerInstantiator(customProperties, valueResolver);
// when
KeyDeserializer result = handlerInstantiator.keyDeserializerInstance(null, null, null);
// then
Assert.assertNull(result);
}
public RefKeyHandler(JavaType keyType, KeyDeserializer _keyDeserializer) {
if (keyType == null) {
throw new IllegalArgumentException("keyType == null");
}
this._keyType = keyType;
this._keyDeserializer = _keyDeserializer;
}
@Override
public GuavaMapDeserializer<ImmutableSortedMap<Object, Object>> withResolved(KeyDeserializer keyDeser,
JsonDeserializer<?> valueDeser, TypeDeserializer typeDeser,
NullValueProvider nuller)
{
return new ImmutableSortedMapDeserializer(_containerType, keyDeser, valueDeser, typeDeser, nuller);
}
@Override
protected JsonDeserializer<?> _createContextual(JavaType type,
KeyDeserializer keyDeserializer, TypeDeserializer typeDeserializer,
JsonDeserializer<?> elementDeserializer, Method method, NullValueProvider nvp)
{
return new LinkedHashMultimapDeserializer(type, keyDeserializer, typeDeserializer,
elementDeserializer, method, nvp);
}
@Override
protected JsonDeserializer<?> _createContextual(JavaType type,
KeyDeserializer keyDeserializer, TypeDeserializer typeDeserializer,
JsonDeserializer<?> elementDeserializer, Method method, NullValueProvider nvp) {
return new HashMultimapDeserializer(type, keyDeserializer, typeDeserializer,
elementDeserializer, method, nvp);
}
@Override
protected JsonDeserializer<?> _createContextual(JavaType type,
KeyDeserializer keyDeserializer, TypeDeserializer typeDeserializer,
JsonDeserializer<?> elementDeserializer, Method method, NullValueProvider nvp) {
return new LinkedListMultimapDeserializer(type, keyDeserializer, typeDeserializer,
elementDeserializer, method, nvp);
}
@Override
protected JsonDeserializer<?> _createContextual(JavaType type,
KeyDeserializer keyDeserializer, TypeDeserializer typeDeserializer,
JsonDeserializer<?> elementDeserializer, Method method,
NullValueProvider nvp) {
return new ArrayListMultimapDeserializer(type, keyDeserializer, typeDeserializer,
elementDeserializer, method, nvp);
}
@Override
public ImmutableMapDeserializer withResolved(KeyDeserializer keyDeser,
JsonDeserializer<?> valueDeser, TypeDeserializer valueTypeDeser,
NullValueProvider nuller) {
return new ImmutableMapDeserializer(_containerType, keyDeser,
valueDeser, valueTypeDeser, nuller);
}
@Override
public JsonDeserializer<?> findMapDeserializer(MapType type, DeserializationConfig config,
BeanDescription beanDesc, KeyDeserializer keyDeserializer,
TypeDeserializer elementTypeDeserializer, JsonDeserializer<?> elementDeserializer) {
return forJavaType(type);
}
private SourceMapDeserializer(final MapDeserializer src,
final KeyDeserializer keyDeser,
final JsonDeserializer<Object> valueDeser,
final TypeDeserializer valueTypeDeser,
final NullValueProvider nuller,
final Set<String> ignorable)
{
super(src, keyDeser, valueDeser, valueTypeDeser, nuller, ignorable);
}
@BeforeEach
public void before() {
mapper = new ObjectMapper();
SimpleModule module = new VavrModule()
.addKeyDeserializer(MyComparable.class, new KeyDeserializer() {
@Override
public Object deserializeKey(String key, DeserializationContext ctxt) {
return new MyComparable(Integer.parseInt(key));
}
});
mapper.registerModule(module);
}
@Override
public KeyDeserializer createContextual( DeserializationContext ctxt, BeanProperty property ) throws JsonMappingException {
if ( ctxt.getContextualType() == null || ctxt.getContextualType().containedType( 0 ) == null || ctxt.getContextualType().containedType( 0 ).containedType( 0 ) == null ) {
throw JsonMappingException.from( ctxt, "Cannot deserialize Ref<T>. Cannot find the Generic Type T." );
}
return new RefStdKeyDeserializer( ctxt.getContextualType().containedType( 0 ).containedType( 0 ) );
}
@Override
public KeyDeserializer keyDeserializerInstance(DeserializationConfig config,
Annotated annotated, Class<?> implClass) {
return (KeyDeserializer) this.beanFactory.createBean(implClass);
}
@Override
public KeyDeserializer keyDeserializerInstance(DeserializationConfig config,
Annotated annotated, Class<?> implClass) {
return (KeyDeserializer) this.beanFactory.createBean(implClass);
}
@Override
public KeyDeserializer keyDeserializerInstance(DeserializationConfig config, Annotated annotated, Class<?> implClass) {
return (KeyDeserializer) this.beanFactory.createBean(implClass);
}
@Override
public JsonDeserializer<?> findMapDeserializer(MapType type, DeserializationConfig config, BeanDescription beanDesc, KeyDeserializer keyDeserializer,
TypeDeserializer elementTypeDeserializer, JsonDeserializer<?> elementDeserializer)
throws JsonMappingException {
return getDeserializer(type.getRawClass());
}
@Override
public JsonDeserializer<?> findMapLikeDeserializer(MapLikeType type, DeserializationConfig config, BeanDescription beanDesc,
KeyDeserializer keyDeserializer, TypeDeserializer elementTypeDeserializer,
JsonDeserializer<?> elementDeserializer) throws JsonMappingException {
return getDeserializer(type.getRawClass());
}
@Override
public KeyDeserializer keyDeserializerInstance(DeserializationConfig config, Annotated annotated, Class<?> keyDeserClass) {
return null;
}
@Override
public KeyDeserializer keyDeserializerInstance(DeserializationConfig config,
Annotated annotated, Class<?> serClass) {
return (KeyDeserializer) this.beanFactory.createBean(serClass);
}
public ImmutableBiMapDeserializer(JavaType type, KeyDeserializer keyDeser,
JsonDeserializer<?> deser, TypeDeserializer typeDeser,
NullValueProvider nuller) {
super(type, keyDeser, deser, typeDeser, nuller);
}
@Override
public GuavaMapDeserializer<ImmutableBiMap<Object, Object>> withResolved(KeyDeserializer keyDeser,
JsonDeserializer<?> valueDeser, TypeDeserializer typeDeser,
NullValueProvider nuller) {
return new ImmutableBiMapDeserializer(_containerType, keyDeser, valueDeser, typeDeser, nuller);
}
GuavaImmutableMapDeserializer(JavaType type, KeyDeserializer keyDeser,
JsonDeserializer<?> valueDeser, TypeDeserializer valueTypeDeser,
NullValueProvider nuller) {
super(type, keyDeser, valueDeser, valueTypeDeser, nuller);
}
@Override
protected T _deserializeEntries(JsonParser p, DeserializationContext ctxt)
throws IOException, JsonProcessingException
{
final KeyDeserializer keyDes = _keyDeserializer;
final JsonDeserializer<?> valueDes = _valueDeserializer;
final TypeDeserializer typeDeser = _valueTypeDeserializer;
ImmutableMap.Builder<Object, Object> builder = createBuilder();
for (; p.currentToken() == JsonToken.FIELD_NAME; p.nextToken()) {
// Must point to field name now
String fieldName = p.currentName();
Object key = (keyDes == null) ? fieldName : keyDes.deserializeKey(fieldName, ctxt);
// And then the value...
JsonToken t = p.nextToken();
// 28-Nov-2010, tatu: Should probably support "ignorable properties" in future...
Object value;
if (t == JsonToken.VALUE_NULL) {
if (!_skipNullValues) {
value = _nullProvider.getNullValue(ctxt);
// 14-Sep-2015, tatu: As per [datatype-guava#52], avoid exception due to null
// TODO: allow reporting problem via a feature, in future?
if (value != null) {
builder.put(key, value);
}
}
continue;
}
if (typeDeser == null) {
value = valueDes.deserialize(p, ctxt);
} else {
value = valueDes.deserializeWithType(p, ctxt, typeDeser);
}
builder.put(key, value);
}
// No class outside of the package will be able to subclass us,
// and we provide the proper builder for the subclasses we implement.
@SuppressWarnings("unchecked")
T map = (T) builder.build();
return map;
}
public ImmutableSortedMapDeserializer(JavaType type, KeyDeserializer keyDeser,
JsonDeserializer<?> valueDeser, TypeDeserializer typeDeser,
NullValueProvider nuller) {
super(type, keyDeser, valueDeser, typeDeser, nuller);
}
public LinkedHashMultimapDeserializer(JavaType type, KeyDeserializer keyDeserializer,
TypeDeserializer elementTypeDeserializer, JsonDeserializer<?> elementDeserializer) {
super(type, keyDeserializer, elementTypeDeserializer, elementDeserializer);
}
public LinkedHashMultimapDeserializer(JavaType type, KeyDeserializer keyDeserializer,
TypeDeserializer elementTypeDeserializer, JsonDeserializer<?> elementDeserializer,
Method creatorMethod, NullValueProvider nvp) {
super(type, keyDeserializer, elementTypeDeserializer, elementDeserializer, creatorMethod, nvp);
}
public HashMultimapDeserializer(JavaType type, KeyDeserializer keyDeserializer,
TypeDeserializer elementTypeDeserializer, JsonDeserializer<?> elementDeserializer) {
super(type, keyDeserializer, elementTypeDeserializer, elementDeserializer);
}
public HashMultimapDeserializer(JavaType type, KeyDeserializer keyDeserializer,
TypeDeserializer elementTypeDeserializer, JsonDeserializer<?> elementDeserializer,
Method creatorMethod, NullValueProvider nvp) {
super(type, keyDeserializer, elementTypeDeserializer, elementDeserializer, creatorMethod, nvp);
}