下面列出了怎么用com.fasterxml.jackson.databind.ser.ContextualSerializer的API类实例代码及写法,或者点击链接到github查看源代码。
@Override
public JsonSerializer<?> createContextual(SerializerProvider provider, BeanProperty property)
throws JsonMappingException
{
JsonSerializer<?> delSer = _delegateSerializer;
JavaType delegateType = _delegateType;
if (delSer == null) {
// Otherwise, need to locate serializer to delegate to. For that we need type information...
if (delegateType == null) {
delegateType = _converter.getOutputType(provider.getTypeFactory());
}
// 02-Apr-2015, tatu: For "dynamic case", where type is only specified as
// java.lang.Object (or missing generic), [databind#731]
if (!delegateType.isJavaLangObject()) {
delSer = provider.findValueSerializer(delegateType);
}
}
if (delSer instanceof ContextualSerializer) {
delSer = provider.handleSecondaryContextualization(delSer, property);
}
if (delSer == _delegateSerializer && delegateType == _delegateType) {
return this;
}
return withDelegate(_converter, delegateType, delSer);
}
@Override // since 2.9
public JsonSerializer<?> createContextual(SerializerProvider provider, BeanProperty property)
throws JsonMappingException
{
// 13-Mar-2017, tatu: Should we call `TypeSerializer.forProperty()`?
JsonSerializer<?> ser = _serializer;
if (ser instanceof ContextualSerializer) {
ser = provider.handleSecondaryContextualization(ser, property);
}
if (ser == _serializer) {
return this;
}
return new TypeWrappedSerializer(_typeSerializer, ser);
}
@Override
public JsonSerializer<?> createContextual(SerializerProvider provider, BeanProperty property)
throws JsonMappingException {
if (delegate instanceof ContextualSerializer) {
return new DeepEmptyCheckingSerializer<>(
((ContextualSerializer) delegate).createContextual(provider, property));
}
return this;
}
/**
* Override to preserve the delegating behavior when a contextualized serializer is created.
*/
@Override
public JsonSerializer<?> createContextual(SerializerProvider prov, BeanProperty property)
throws JsonMappingException {
if (_delegateSerializer instanceof ContextualSerializer) {
JsonSerializer<?> contextualDelegate = ((ContextualSerializer) _delegateSerializer).createContextual(prov, property);
// Check for different instance
if (contextualDelegate != _delegateSerializer) {
return new DelegatingMapSerializer(contextualDelegate);
}
}
return this;
}