case JsonTokenId.ID_STRING: String text = p.getText().trim(); if (_isEmptyOrTextualNull(text)) { _verifyNullForPrimitiveCoercion(ctxt, text); return 0; return _parseIntPrimitive(ctxt, text); case JsonTokenId.ID_NUMBER_FLOAT: if (!ctxt.isEnabled(DeserializationFeature.ACCEPT_FLOAT_AS_INT)) { _failDoubleToIntCoercion(p, ctxt, "int"); _verifyNullForPrimitive(ctxt); return 0; case JsonTokenId.ID_START_ARRAY: if (ctxt.isEnabled(DeserializationFeature.UNWRAP_SINGLE_VALUE_ARRAYS)) { p.nextToken(); final int parsed = _parseIntPrimitive(p, ctxt); _verifyEndArrayForSingle(p, ctxt); return parsed;
protected java.util.Date _parseDateFromArray(JsonParser p, DeserializationContext ctxt) throws IOException { JsonToken t; if (ctxt.hasSomeOfFeatures(F_MASK_ACCEPT_ARRAYS)) { t = p.nextToken(); if (t == JsonToken.END_ARRAY) { if (ctxt.isEnabled(DeserializationFeature.ACCEPT_EMPTY_ARRAY_AS_NULL_OBJECT)) { return (java.util.Date) getNullValue(ctxt); } } if (ctxt.isEnabled(DeserializationFeature.UNWRAP_SINGLE_VALUE_ARRAYS)) { final Date parsed = _parseDate(p, ctxt); _verifyEndArrayForSingle(p, ctxt); return parsed; } } else { t = p.getCurrentToken(); } return (java.util.Date) ctxt.handleUnexpectedToken(_valueClass, t, p, null); }
/** * Method called when a JSON property is encountered that has not matching * setter, any-setter or field, and thus cannot be assigned. */ @Override protected void handleUnknownProperty(JsonParser p, DeserializationContext ctxt, Object beanOrClass, String propName) throws IOException { if (_ignoreAllUnknown) { p.skipChildren(); return; } if (_ignorableProps != null && _ignorableProps.contains(propName)) { handleIgnoredProperty(p, ctxt, beanOrClass, propName); } // Otherwise use default handling (call handler(s); if not // handled, throw exception or skip depending on settings) super.handleUnknownProperty(p, ctxt, beanOrClass, propName); }
/** * Method to call when JSON `null` token is encountered. Note: only called when * this deserializer encounters it but NOT when reached via property * * @since 2.9 */ protected Object _coerceNullToken(DeserializationContext ctxt, boolean isPrimitive) throws JsonMappingException { if (isPrimitive) { _verifyNullForPrimitive(ctxt); } return getNullValue(ctxt); }
protected final short _parseShortPrimitive(JsonParser p, DeserializationContext ctxt) throws IOException { int value = _parseIntPrimitive(p, ctxt); // So far so good: but does it fit? if (_shortOverflow(value)) { Number v = (Number) ctxt.handleWeirdStringValue(_valueClass, String.valueOf(value), "overflow, value cannot be represented as 16-bit value"); return _nonNullNumber(v).shortValue(); } return (short) value; }
protected final byte _parseBytePrimitive(JsonParser p, DeserializationContext ctxt) throws IOException { int value = _parseIntPrimitive(p, ctxt); // So far so good: but does it fit? if (_byteOverflow(value)) { Number v = (Number) ctxt.handleWeirdStringValue(_valueClass, String.valueOf(value), "overflow, value cannot be represented as 8-bit value"); return _nonNullNumber(v).byteValue(); } return (byte) value; }
String text = p.getText().trim(); if (text.length() == 0) { return (Double) getEmptyValue(ctxt); if (_hasTextualNull(text)) { return (Double) getNullValue(ctxt); if (_isPosInf(text)) { return Double.POSITIVE_INFINITY; if (_isNaN(text)) { return Double.NaN; if (_isNegInf(text)) { return Double.NEGATIVE_INFINITY; return parseDouble(text); } catch (IllegalArgumentException iae) { } return (Double) ctxt.handleWeirdStringValue(_valueClass, text, return (Double) getNullValue(ctxt); final Double parsed = _parseDouble(p, ctxt); t = p.nextToken(); if (t != JsonToken.END_ARRAY) { handleMissingEndArrayForSingle(p, ctxt);
String text = p.getText().trim(); if (text.length() == 0) { return (Float) getEmptyValue(ctxt); if (_hasTextualNull(text)) { return (Float) getNullValue(ctxt); if (_isPosInf(text)) { return Float.POSITIVE_INFINITY; if (_isNaN(text)) { return Float.NaN; if (_isNegInf(text)) { return Float.NEGATIVE_INFINITY; return (Float) getNullValue(ctxt); final Float parsed = _parseFloat(p, ctxt); t = p.nextToken(); if (t != JsonToken.END_ARRAY) { handleMissingEndArrayForSingle(p, ctxt);
if (text.length() == 0 || _hasTextualNull(text)) { return 0.0; if (_isPosInf(text)) { return Double.POSITIVE_INFINITY; if (_isNaN(text)) { return Double.NaN; if (_isNegInf(text)) { return Double.NEGATIVE_INFINITY; return parseDouble(text); } catch (IllegalArgumentException iae) { } Number v = (Number) ctxt.handleWeirdStringValue(_valueClass, text, final double parsed = _parseDoublePrimitive(p, ctxt); t = p.nextToken(); if (t != JsonToken.END_ARRAY) { handleMissingEndArrayForSingle(p, ctxt);
/** * @since 2.9 */ protected final double _parseDoublePrimitive(DeserializationContext ctxt, String text) throws IOException { switch (text.charAt(0)) { case 'I': if (_isPosInf(text)) { return Double.POSITIVE_INFINITY; } break; case 'N': if (_isNaN(text)) { return Double.NaN; } break; case '-': if (_isNegInf(text)) { return Double.NEGATIVE_INFINITY; } break; } try { return parseDouble(text); } catch (IllegalArgumentException iae) { } Number v = (Number) ctxt.handleWeirdStringValue(_valueClass, text, "not a valid double value (as String to convert)"); return _nonNullNumber(v).doubleValue(); }
if (text.length() == 0 || _hasTextualNull(text)) { return 0.0f; if (_isPosInf(text)) { return Float.POSITIVE_INFINITY; if (_isNaN(text)) { return Float.NaN; } break; case '-': if (_isNegInf(text)) { return Float.NEGATIVE_INFINITY; final float parsed = _parseFloatPrimitive(p, ctxt); t = p.nextToken(); if (t != JsonToken.END_ARRAY) { handleMissingEndArrayForSingle(p, ctxt);
protected java.util.Date _parseDate(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { JsonToken t = jp.getCurrentToken(); if (t == JsonToken.VALUE_NUMBER_INT) { return new java.util.Date(jp.getLongValue()); } if (t == JsonToken.VALUE_NULL) { return (java.util.Date) getNullValue(); } if (t == JsonToken.VALUE_STRING) { String value = null; try { // As per [JACKSON-203], take empty Strings to mean value = jp.getText().trim(); if (value.length() == 0) { return (Date) getEmptyValue(); } return ctxt.parseDate(value); } catch (IllegalArgumentException iae) { throw ctxt.weirdStringException(value, _valueClass, "not a valid representation (error: "+iae.getMessage()+")"); } } throw ctxt.mappingException(_valueClass, t); }
return Boolean.valueOf(_parseBooleanFromInt(p, ctxt)); return (Boolean) getNullValue(ctxt); return (Boolean) getEmptyValue(ctxt); if (_hasTextualNull(text)) { return (Boolean) getNullValue(ctxt); final Boolean parsed = _parseBoolean(p, ctxt); t = p.nextToken(); if (t != JsonToken.END_ARRAY) { handleMissingEndArrayForSingle(p, ctxt);
case JsonTokenId.ID_NUMBER_FLOAT: if (!ctxt.isEnabled(DeserializationFeature.ACCEPT_FLOAT_AS_INT)) { _failDoubleToIntCoercion(p, ctxt, "Long"); return (Long) getEmptyValue(ctxt); if (_hasTextualNull(text)) { return (Long) getNullValue(ctxt); return (Long) getNullValue(ctxt); case JsonTokenId.ID_START_ARRAY: if (ctxt.isEnabled(DeserializationFeature.UNWRAP_SINGLE_VALUE_ARRAYS)) { p.nextToken(); final Long parsed = _parseLong(p, ctxt); JsonToken t = p.nextToken(); if (t != JsonToken.END_ARRAY) { handleMissingEndArrayForSingle(p, ctxt);
int len = text.length(); if (len == 0) { return (Short) getEmptyValue(ctxt); if (_hasTextualNull(text)) { return (Short) getNullValue(ctxt); _failDoubleToIntCoercion(p, ctxt, "Short"); return (Short) getNullValue(ctxt); final Short parsed = _parseShort(p, ctxt); t = p.nextToken(); if (t != JsonToken.END_ARRAY) { handleMissingEndArrayForSingle(p, ctxt);
if (_hasTextualNull(text)) { return (Byte) getNullValue(ctxt); int len = text.length(); if (len == 0) { return (Byte) getEmptyValue(ctxt); _failDoubleToIntCoercion(p, ctxt, "Byte"); return (Byte) getNullValue(ctxt); final Byte parsed = _parseByte(p, ctxt); t = p.nextToken(); if (t != JsonToken.END_ARRAY) { handleMissingEndArrayForSingle(p, ctxt);
case JsonTokenId.ID_NUMBER_FLOAT: // coercing may work too if (!ctxt.isEnabled(DeserializationFeature.ACCEPT_FLOAT_AS_INT)) { _failDoubleToIntCoercion(p, ctxt, "Integer"); try { int len = text.length(); if (_hasTextualNull(text)) { return (Integer) getNullValue(ctxt); return (Integer) getEmptyValue(ctxt); return (Integer) getNullValue(ctxt); case JsonTokenId.ID_START_ARRAY: if (ctxt.isEnabled(DeserializationFeature.UNWRAP_SINGLE_VALUE_ARRAYS)) { p.nextToken(); final Integer parsed = _parseInteger(p, ctxt); if (p.nextToken() != JsonToken.END_ARRAY) { handleMissingEndArrayForSingle(p, ctxt);
return (jp.getIntValue() == 0) ? Boolean.FALSE : Boolean.TRUE; return Boolean.valueOf(_parseBooleanFromNumber(jp, ctxt)); return (Boolean) getNullValue(); return (Boolean) getEmptyValue(); if (_hasTextualNull(text)) { return (Boolean) getNullValue(); final Boolean parsed = _parseBoolean(jp, ctxt); t = jp.nextToken(); if (t != JsonToken.END_ARRAY) {
return (java.util.Date) getNullValue(); return (Date) getEmptyValue(); if (_hasTextualNull(value)) { return (java.util.Date) getNullValue(); final Date parsed = _parseDate(jp, ctxt); t = jp.nextToken(); if (t != JsonToken.END_ARRAY) {
String text = jp.getText().trim(); if (text.length() == 0) { return (Double) getEmptyValue(); return parseDouble(text); } catch (IllegalArgumentException iae) { } throw ctxt.weirdStringException(_valueClass, "not a valid Double value"); return (Double) getNullValue();