com.fasterxml.jackson.databind.deser.std
Class NumberDeserializers.NumberDeserializer
java.lang.Object
com.fasterxml.jackson.databind.JsonDeserializer<T>
com.fasterxml.jackson.databind.deser.std.StdDeserializer<T>
com.fasterxml.jackson.databind.deser.std.StdScalarDeserializer<Number>
com.fasterxml.jackson.databind.deser.std.NumberDeserializers.NumberDeserializer
- Enclosing class:
- NumberDeserializers
public static final class NumberDeserializers.NumberDeserializer
- extends StdScalarDeserializer<Number>
For type Number.class
, we can just rely on type
mappings that plain JsonParser.getNumberValue()
returns.
Since 1.5, there is one additional complication: some numeric
types (specifically, int/Integer and double/Double) are "non-typed";
meaning that they will NEVER be output with type information.
But other numeric types may need such type information.
This is why deserializeWithType(com.fasterxml.jackson.core.JsonParser, com.fasterxml.jackson.databind.DeserializationContext, com.fasterxml.jackson.databind.jsontype.TypeDeserializer)
must be overridden.
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, findDeserializer, getValueClass, getValueType, handleUnknownProperty, isDefaultDeserializer, isDefaultKeyDeserializer, parseDouble |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
NumberDeserializers.NumberDeserializer
public NumberDeserializers.NumberDeserializer()
deserialize
public Number deserialize(com.fasterxml.jackson.core.JsonParser jp,
DeserializationContext ctxt)
throws IOException,
com.fasterxml.jackson.core.JsonProcessingException
- Description copied from class:
JsonDeserializer
- Method that can be called to ask implementation to deserialize
JSON content into the value type this serializer handles.
Returned instance is to be constructed by method itself.
Pre-condition for this method is that the parser points to the
first event that is part of value to deserializer (and which
is never JSON 'null' literal, more on this below): for simple
types it may be the only value; and for structured types the
Object start marker.
Post-condition is that the parser will point to the last
event that is part of deserialized value (or in case deserialization
fails, event that was not recognized or usable, which may be
the same event as the one it pointed to upon call).
Note that this method is never called for JSON null literal,
and thus deserializers need (and should) not check for it.
- Specified by:
deserialize
in class JsonDeserializer<Number>
- Parameters:
jp
- Parsed used for reading JSON contentctxt
- Context that can be used to access information about
this deserialization activity.
- Returns:
- Deserializer value
- Throws:
IOException
com.fasterxml.jackson.core.JsonProcessingException
deserializeWithType
public Object deserializeWithType(com.fasterxml.jackson.core.JsonParser jp,
DeserializationContext ctxt,
TypeDeserializer typeDeserializer)
throws IOException,
com.fasterxml.jackson.core.JsonProcessingException
- As mentioned in class Javadoc, there is additional complexity in
handling potentially mixed type information here. Because of this,
we must actually check for "raw" integers and doubles first, before
calling type deserializer.
- Overrides:
deserializeWithType
in class StdScalarDeserializer<Number>
typeDeserializer
- Deserializer to use for handling type information
- Throws:
IOException
com.fasterxml.jackson.core.JsonProcessingException
Copyright © 2012 fasterxml.com. All Rights Reserved.