下面列出了怎么用com.fasterxml.jackson.databind.deser.BeanDeserializerBase的API类实例代码及写法,或者点击链接到github查看源代码。
@Override
public JsonDeserializer<?> modifyDeserializer(DeserializationConfig config,
BeanDescription beanDesc, JsonDeserializer<?> deserializer) {
if (deserializer instanceof BeanDeserializerBase) {
return new DataBinderDeserializer(
(BeanDeserializerBase) deserializer);
}
// When there is no custom-deserializer implementation returns the
// default jackson deserializer
return deserializer;
}
protected final NullValueProvider _findNullProvider(DeserializationContext ctxt,
BeanProperty prop, Nulls nulls, JsonDeserializer<?> valueDeser)
throws JsonMappingException
{
if (nulls == Nulls.FAIL) {
if (prop == null) {
return NullsFailProvider.constructForRootValue(ctxt.constructType(valueDeser.handledType()));
}
return NullsFailProvider.constructForProperty(prop);
}
if (nulls == Nulls.AS_EMPTY) {
// cannot deal with empty values if there is no value deserializer that
// can indicate what "empty value" is:
if (valueDeser == null) {
return null;
}
// Let's first do some sanity checking...
// NOTE: although we could use `ValueInstantiator.Gettable` in general,
// let's not since that would prevent being able to use custom impls:
if (valueDeser instanceof BeanDeserializerBase) {
ValueInstantiator vi = ((BeanDeserializerBase) valueDeser).getValueInstantiator();
if (!vi.canCreateUsingDefault()) {
final JavaType type = prop.getType();
ctxt.reportBadDefinition(type,
String.format("Cannot create empty instance of %s, no default Creator", type));
}
}
// Second: can with pre-fetch value?
{
AccessPattern access = valueDeser.getEmptyAccessPattern();
if (access == AccessPattern.ALWAYS_NULL) {
return NullsConstantProvider.nuller();
}
if (access == AccessPattern.CONSTANT) {
return NullsConstantProvider.forValue(valueDeser.getEmptyValue(ctxt));
}
}
return new NullsAsEmptyProvider(valueDeser);
}
if (nulls == Nulls.SKIP) {
return NullsConstantProvider.skipper();
}
return null;
}
EntityBeanDeserializer(BeanDeserializerBase source, ObjectIdReader reader) {
super(source, reader);
}
public DataBinderDeserializer(BeanDeserializerBase source) {
super(source);
}
public DataBinderDeserializer(BeanDeserializerBase source,
ObjectIdReader objectIdReader) {
super(source, objectIdReader);
}
public DataBinderDeserializer(BeanDeserializerBase source,
HashSet<String> ignorableProps) {
super(source, ignorableProps);
}
/**
* {@inheritDoc}
*
* Uses {@link DataBinderDeserializer}
*/
@Override
public BeanDeserializerBase withIgnorableProperties(
HashSet<String> ignorableProps) {
return new DataBinderDeserializer(this, ignorableProps);
}
/**
* {@inheritDoc}
*
* Not used
*/
@Override
protected BeanDeserializerBase asArrayDeserializer() {
// Not used
return null;
}
/**
* {@inheritDoc}
*
* Uses {@link DataBinderDeserializer}
*/
@Override
public BeanDeserializerBase withObjectIdReader(ObjectIdReader objectIdReader) {
return new DataBinderDeserializer(this, objectIdReader);
}