com.fasterxml.jackson.databind.deser
Class BeanDeserializer

java.lang.Object
  extended by com.fasterxml.jackson.databind.JsonDeserializer<T>
      extended by com.fasterxml.jackson.databind.deser.std.StdDeserializer<Object>
          extended by com.fasterxml.jackson.databind.deser.BeanDeserializerBase
              extended by com.fasterxml.jackson.databind.deser.BeanDeserializer
All Implemented Interfaces:
ContextualDeserializer, ResolvableDeserializer, Serializable
Direct Known Subclasses:
ThrowableDeserializer

public class BeanDeserializer
extends BeanDeserializerBase
implements Serializable

Deserializer class that can deserialize instances of arbitrary bean objects, usually from JSON Object structs, but possibly also from simple types like String values.

See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class com.fasterxml.jackson.databind.JsonDeserializer
JsonDeserializer.None
 
Field Summary
 
Fields inherited from class com.fasterxml.jackson.databind.deser.BeanDeserializerBase
_anySetter, _backRefs, _beanProperties, _beanType, _delegateDeserializer, _externalTypeIdHandler, _ignorableProps, _ignoreAllUnknown, _injectables, _needViewProcesing, _nonStandardCreation, _objectIdReader, _propertyBasedCreator, _serializationShape, _subDeserializers, _unwrappedPropertyHandler, _valueInstantiator, _vanillaProcessing
 
Fields inherited from class com.fasterxml.jackson.databind.deser.std.StdDeserializer
_valueClass
 
Constructor Summary
protected BeanDeserializer(BeanDeserializerBase src)
          Copy-constructor that can be used by sub-classes to allow copy-on-write style copying of settings of an existing instance.
protected BeanDeserializer(BeanDeserializerBase src, boolean ignoreAllUnknown)
           
  BeanDeserializer(BeanDeserializerBase src, HashSet<String> ignorableProps)
           
protected BeanDeserializer(BeanDeserializerBase src, NameTransformer unwrapper)
           
  BeanDeserializer(BeanDeserializerBase src, ObjectIdReader oir)
           
  BeanDeserializer(BeanDeserializerBuilder builder, BeanDescription beanDesc, BeanPropertyMap properties, Map<String,SettableBeanProperty> backRefs, HashSet<String> ignorableProps, boolean ignoreAllUnknown, boolean hasViews)
          Constructor used by BeanDeserializerBuilder.
 
Method Summary
protected  Object _deserializeUsingPropertyBased(JsonParser jp, DeserializationContext ctxt)
          Method called to deserialize bean using "property-based creator": this means that a non-default constructor or factory method is called, and then possibly other setters.
protected  BeanDeserializerBase asArrayDeserializer()
          Fluent factory for creating a variant that can handle POJO output as a JSON Array.
 Object deserialize(JsonParser jp, DeserializationContext ctxt)
          Main deserialization method for bean-based objects (POJOs).
 Object deserialize(JsonParser jp, DeserializationContext ctxt, Object bean)
          Secondary deserialization method, called in cases where POJO instance is created as part of deserialization, potentially after collecting some or all of the properties to set.
 Object deserializeFromArray(JsonParser jp, DeserializationContext ctxt)
           
 Object deserializeFromBoolean(JsonParser jp, DeserializationContext ctxt)
          Method called to deserialize POJO value from a JSON boolean value (true, false)
 Object deserializeFromDouble(JsonParser jp, DeserializationContext ctxt)
          Method called to deserialize POJO value from a JSON floating-point number.
 Object deserializeFromNumber(JsonParser jp, DeserializationContext ctxt)
           
 Object deserializeFromObject(JsonParser jp, DeserializationContext ctxt)
          General version used when handling needs more advanced features.
protected  Object deserializeFromObjectUsingNonDefault(JsonParser jp, DeserializationContext ctxt)
           
 Object deserializeFromString(JsonParser jp, DeserializationContext ctxt)
           
protected  Object deserializeUsingPropertyBasedWithExternalTypeId(JsonParser jp, DeserializationContext ctxt)
           
protected  Object deserializeUsingPropertyBasedWithUnwrapped(JsonParser jp, DeserializationContext ctxt)
           
protected  Object deserializeWithExternalTypeId(JsonParser jp, DeserializationContext ctxt)
           
protected  Object deserializeWithExternalTypeId(JsonParser jp, DeserializationContext ctxt, Object bean)
           
protected  Object deserializeWithObjectId(JsonParser jp, DeserializationContext ctxt)
          Alternative deserialization method used when we expect to see Object Id; if so, we will need to ensure that the Id is seen before anything else, to ensure that it is available for solving references, even if JSON itself is not ordered that way.
protected  Object deserializeWithUnwrapped(JsonParser jp, DeserializationContext ctxt)
          Method called when there are declared "unwrapped" properties which need special handling
protected  Object deserializeWithUnwrapped(JsonParser jp, DeserializationContext ctxt, Object bean)
           
protected  Object deserializeWithView(JsonParser jp, DeserializationContext ctxt, Object bean, Class<?> activeView)
           
protected  Object handlePolymorphic(JsonParser jp, DeserializationContext ctxt, Object bean, TokenBuffer unknownTokens)
          Method called in cases where we may have polymorphic deserialization case: that is, type of Creator-constructed bean is not the type of deserializer itself.
 JsonDeserializer<Object> unwrappingDeserializer(NameTransformer unwrapper)
          Method that will return deserializer instance that is able to handle "unwrapped" value instances If no unwrapped instance can be constructed, will simply return this object as-is.
 BeanDeserializer withIgnorableProperties(HashSet<String> ignorableProps)
           
 BeanDeserializer withObjectIdReader(ObjectIdReader oir)
           
 
Methods inherited from class com.fasterxml.jackson.databind.deser.BeanDeserializerBase
_findSubclassDeserializer, _resolveInnerClassValuedProperty, _resolveManagedReferenceProperty, _resolveUnwrappedProperty, createContextual, creatorProperties, deserializeFromObjectId, deserializeWithType, findBackReference, findProperty, getBeanClass, getKnownPropertyNames, getObjectIdReader, getPropertyCount, getValueInstantiator, getValueType, handleUnknownProperties, handleUnknownProperty, hasProperty, hasViews, injectValues, isCachable, properties, replaceProperty, resolve, wrapAndThrow, wrapAndThrow, wrapInstantiationProblem
 
Methods inherited from class com.fasterxml.jackson.databind.deser.std.StdDeserializer
_parseBoolean, _parseBooleanFromNumber, _parseBooleanPrimitive, _parseByte, _parseDate, _parseDouble, _parseDoublePrimitive, _parseFloat, _parseFloatPrimitive, _parseInteger, _parseIntPrimitive, _parseLong, _parseLongPrimitive, _parseShort, _parseShortPrimitive, _parseString, findDeserializer, getValueClass, isDefaultDeserializer, isDefaultKeyDeserializer, parseDouble
 
Methods inherited from class com.fasterxml.jackson.databind.JsonDeserializer
getDelegatee, getEmptyValue, getNullValue, replaceDelegatee
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

BeanDeserializer

public BeanDeserializer(BeanDeserializerBuilder builder,
                        BeanDescription beanDesc,
                        BeanPropertyMap properties,
                        Map<String,SettableBeanProperty> backRefs,
                        HashSet<String> ignorableProps,
                        boolean ignoreAllUnknown,
                        boolean hasViews)
Constructor used by BeanDeserializerBuilder.


BeanDeserializer

protected BeanDeserializer(BeanDeserializerBase src)
Copy-constructor that can be used by sub-classes to allow copy-on-write style copying of settings of an existing instance.


BeanDeserializer

protected BeanDeserializer(BeanDeserializerBase src,
                           boolean ignoreAllUnknown)

BeanDeserializer

protected BeanDeserializer(BeanDeserializerBase src,
                           NameTransformer unwrapper)

BeanDeserializer

public BeanDeserializer(BeanDeserializerBase src,
                        ObjectIdReader oir)

BeanDeserializer

public BeanDeserializer(BeanDeserializerBase src,
                        HashSet<String> ignorableProps)
Method Detail

unwrappingDeserializer

public JsonDeserializer<Object> unwrappingDeserializer(NameTransformer unwrapper)
Description copied from class: JsonDeserializer
Method that will return deserializer instance that is able to handle "unwrapped" value instances If no unwrapped instance can be constructed, will simply return this object as-is.

Default implementation just returns 'this' indicating that no unwrapped variant exists

Specified by:
unwrappingDeserializer in class BeanDeserializerBase

withObjectIdReader

public BeanDeserializer withObjectIdReader(ObjectIdReader oir)
Specified by:
withObjectIdReader in class BeanDeserializerBase

withIgnorableProperties

public BeanDeserializer withIgnorableProperties(HashSet<String> ignorableProps)
Specified by:
withIgnorableProperties in class BeanDeserializerBase

asArrayDeserializer

protected BeanDeserializerBase asArrayDeserializer()
Description copied from class: BeanDeserializerBase
Fluent factory for creating a variant that can handle POJO output as a JSON Array. Implementations may ignore this request if no such input is possible.

Specified by:
asArrayDeserializer in class BeanDeserializerBase

deserialize

public final Object deserialize(JsonParser jp,
                                DeserializationContext ctxt)
                         throws IOException,
                                JsonProcessingException
Main deserialization method for bean-based objects (POJOs).

Specified by:
deserialize in class JsonDeserializer<Object>
Parameters:
jp - Parsed used for reading JSON content
ctxt - Context that can be used to access information about this deserialization activity.
Returns:
Deserializer value
Throws:
IOException
JsonProcessingException

deserialize

public Object deserialize(JsonParser jp,
                          DeserializationContext ctxt,
                          Object bean)
                   throws IOException,
                          JsonProcessingException
Secondary deserialization method, called in cases where POJO instance is created as part of deserialization, potentially after collecting some or all of the properties to set.

Overrides:
deserialize in class JsonDeserializer<Object>
Throws:
IOException
JsonProcessingException

deserializeFromObject

public Object deserializeFromObject(JsonParser jp,
                                    DeserializationContext ctxt)
                             throws IOException,
                                    JsonProcessingException
General version used when handling needs more advanced features.

Throws:
IOException
JsonProcessingException

deserializeWithObjectId

protected Object deserializeWithObjectId(JsonParser jp,
                                         DeserializationContext ctxt)
                                  throws IOException,
                                         JsonProcessingException
Alternative deserialization method used when we expect to see Object Id; if so, we will need to ensure that the Id is seen before anything else, to ensure that it is available for solving references, even if JSON itself is not ordered that way. This may require buffering in some cases, but usually just a simple lookup to ensure that ordering is correct.

Throws:
IOException
JsonProcessingException

deserializeFromObjectUsingNonDefault

protected Object deserializeFromObjectUsingNonDefault(JsonParser jp,
                                                      DeserializationContext ctxt)
                                               throws IOException,
                                                      JsonProcessingException
Throws:
IOException
JsonProcessingException

deserializeFromString

public Object deserializeFromString(JsonParser jp,
                                    DeserializationContext ctxt)
                             throws IOException,
                                    JsonProcessingException
Throws:
IOException
JsonProcessingException

deserializeFromNumber

public Object deserializeFromNumber(JsonParser jp,
                                    DeserializationContext ctxt)
                             throws IOException,
                                    JsonProcessingException
Throws:
IOException
JsonProcessingException

deserializeFromDouble

public Object deserializeFromDouble(JsonParser jp,
                                    DeserializationContext ctxt)
                             throws IOException,
                                    JsonProcessingException
Method called to deserialize POJO value from a JSON floating-point number.

Throws:
IOException
JsonProcessingException

deserializeFromBoolean

public Object deserializeFromBoolean(JsonParser jp,
                                     DeserializationContext ctxt)
                              throws IOException,
                                     JsonProcessingException
Method called to deserialize POJO value from a JSON boolean value (true, false)

Throws:
IOException
JsonProcessingException

deserializeFromArray

public Object deserializeFromArray(JsonParser jp,
                                   DeserializationContext ctxt)
                            throws IOException,
                                   JsonProcessingException
Throws:
IOException
JsonProcessingException

_deserializeUsingPropertyBased

protected final Object _deserializeUsingPropertyBased(JsonParser jp,
                                                      DeserializationContext ctxt)
                                               throws IOException,
                                                      JsonProcessingException
Method called to deserialize bean using "property-based creator": this means that a non-default constructor or factory method is called, and then possibly other setters. The trick is that values for creator method need to be buffered, first; and due to non-guaranteed ordering possibly some other properties as well.

Throws:
IOException
JsonProcessingException

handlePolymorphic

protected Object handlePolymorphic(JsonParser jp,
                                   DeserializationContext ctxt,
                                   Object bean,
                                   TokenBuffer unknownTokens)
                            throws IOException,
                                   JsonProcessingException
Method called in cases where we may have polymorphic deserialization case: that is, type of Creator-constructed bean is not the type of deserializer itself. It should be a sub-class or implementation class; either way, we may have more specific deserializer to use for handling it.

Parameters:
jp - (optional) If not null, parser that has more properties to handle (in addition to buffered properties); if null, all properties are passed in buffer
Throws:
IOException
JsonProcessingException

deserializeWithView

protected final Object deserializeWithView(JsonParser jp,
                                           DeserializationContext ctxt,
                                           Object bean,
                                           Class<?> activeView)
                                    throws IOException,
                                           JsonProcessingException
Throws:
IOException
JsonProcessingException

deserializeWithUnwrapped

protected Object deserializeWithUnwrapped(JsonParser jp,
                                          DeserializationContext ctxt)
                                   throws IOException,
                                          JsonProcessingException
Method called when there are declared "unwrapped" properties which need special handling

Throws:
IOException
JsonProcessingException

deserializeWithUnwrapped

protected Object deserializeWithUnwrapped(JsonParser jp,
                                          DeserializationContext ctxt,
                                          Object bean)
                                   throws IOException,
                                          JsonProcessingException
Throws:
IOException
JsonProcessingException

deserializeUsingPropertyBasedWithUnwrapped

protected Object deserializeUsingPropertyBasedWithUnwrapped(JsonParser jp,
                                                            DeserializationContext ctxt)
                                                     throws IOException,
                                                            JsonProcessingException
Throws:
IOException
JsonProcessingException

deserializeWithExternalTypeId

protected Object deserializeWithExternalTypeId(JsonParser jp,
                                               DeserializationContext ctxt)
                                        throws IOException,
                                               JsonProcessingException
Throws:
IOException
JsonProcessingException

deserializeWithExternalTypeId

protected Object deserializeWithExternalTypeId(JsonParser jp,
                                               DeserializationContext ctxt,
                                               Object bean)
                                        throws IOException,
                                               JsonProcessingException
Throws:
IOException
JsonProcessingException

deserializeUsingPropertyBasedWithExternalTypeId

protected Object deserializeUsingPropertyBasedWithExternalTypeId(JsonParser jp,
                                                                 DeserializationContext ctxt)
                                                          throws IOException,
                                                                 JsonProcessingException
Throws:
IOException
JsonProcessingException


Copyright © 2012 FasterXML. All Rights Reserved.