Refine search
case VALUE_STRING: case FIELD_NAME: result = new BigDecimal(parser.getText()); result = result.setScale(scale, HALF_UP); break; case VALUE_NUMBER_FLOAT: case VALUE_NUMBER_INT: result = parser.getDecimalValue(); result = result.setScale(scale, HALF_UP); break; break; default: throw new JsonCastException(format("Unexpected token when cast to DECIMAL(%s,%s): %s", precision, scale, parser.getText()));
writeString(p.getTextCharacters(), p.getTextOffset(), p.getTextLength()); } else { writeString(p.getText()); writeNumber(p.getDecimalValue()); } else if (n == NumberType.FLOAT) { writeNumber(p.getFloatValue());
@Override public Duration deserialize(JsonParser parser, DeserializationContext context) throws IOException { switch (parser.getCurrentTokenId()) { case JsonTokenId.ID_NUMBER_FLOAT: BigDecimal value = parser.getDecimalValue(); long seconds = value.longValue(); int nanoseconds = DecimalUtils.extractNanosecondDecimal(value, seconds); return Duration.ofSeconds(seconds, nanoseconds); case JsonTokenId.ID_NUMBER_INT: return Duration.ofSeconds(parser.getLongValue()); case JsonTokenId.ID_STRING: String string = parser.getText().trim(); if (string.length() == 0) { return null; } return Duration.parse(string); } throw context.mappingException("Expected type float, integer, or string."); } }
writeString(p.getTextCharacters(), p.getTextOffset(), p.getTextLength()); } else { writeString(p.getText()); writeNumber(p.getDecimalValue()); } else if (n == NumberType.FLOAT) { writeNumber(p.getFloatValue());
@Override public BigDecimal deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { switch (p.getCurrentTokenId()) { case JsonTokenId.ID_NUMBER_INT: case JsonTokenId.ID_NUMBER_FLOAT: return p.getDecimalValue(); case JsonTokenId.ID_STRING: String text = p.getText().trim(); // note: no need to call `coerce` as this is never primitive if (_isEmptyOrTextualNull(text)) { _verifyNullForScalarCoercion(ctxt, text); return getNullValue(ctxt); } _verifyStringForScalarCoercion(ctxt, text); try { return new BigDecimal(text); } catch (IllegalArgumentException iae) { } return (BigDecimal) ctxt.handleWeirdStringValue(_valueClass, text, "not a valid representation"); case JsonTokenId.ID_START_ARRAY: return _deserializeFromArray(p, ctxt); } // Otherwise, no can do: return (BigDecimal) ctxt.handleUnexpectedToken(_valueClass, p); } }
writeString(p.getTextCharacters(), p.getTextOffset(), p.getTextLength()); } else { writeString(p.getText()); writeNumber(p.getDecimalValue()); } else { switch (p.getNumberType()) { case BIG_DECIMAL: writeNumber(p.getDecimalValue()); break; case FLOAT:
BigDecimal value = parser.getDecimalValue(); long seconds = value.longValue(); int nanoseconds = DecimalUtils.extractNanosecondDecimal(value, seconds); String string = parser.getText().trim(); if (string.length() == 0) { return null;
_failDoubleToIntCoercion(p, ctxt, "java.math.BigInteger"); return p.getDecimalValue().toBigInteger(); case JsonTokenId.ID_START_ARRAY: return _deserializeFromArray(p, ctxt); case JsonTokenId.ID_STRING: // let's do implicit re-parse String text = p.getText().trim();
return p.getEmbeddedObject(); case JsonTokenId.ID_STRING: return p.getText(); return p.getDecimalValue();
BigDecimal value = parser.getDecimalValue(); return DecimalUtils.extractSecondsAndNanos(value, Duration::ofSeconds); String string = parser.getText().trim(); if (string.length() == 0) { return null;
return p.getDecimalValue(); String text = p.getText().trim(); if ((text.length() == 0)) {
return p.getText(); return p.getDecimalValue();
return _fromDecimal(context, parser.getDecimalValue()); String string = parser.getText().trim(); if (string.length() == 0) { return null;
return _stringDeserializer.deserialize(p, ctxt); return p.getText(); return p.getDecimalValue();
case FLOAT: if (handleFloatNumbersAsText) { doc.setString(fieldName, parser.getText()); case DOUBLE: if (handleFloatNumbersAsText) { doc.setString(fieldName, parser.getText()); case BIG_DECIMAL: if (handleFloatNumbersAsText) { doc.setString(fieldName, parser.getText()); doc.setNumber(fieldName, parser.getDecimalValue());
case FLOAT: if (handleFloatNumbersAsText) { array.add(parser.getText()); case DOUBLE: if (handleFloatNumbersAsText) { array.add(parser.getText()); case BIG_DECIMAL: if (handleFloatNumbersAsText) { array.add(parser.getText()); array.add(parser.getDecimalValue());
return _stringDeserializer.deserialize(p, ctxt); return p.getText(); return p.getDecimalValue();
return _stringDeserializer.deserialize(p, ctxt, intoValue); return p.getText(); return p.getDecimalValue();
private Object parseJson(JsonToken token) throws IOException { if (token == null) { token = parser.nextToken(); // if it is a simple value just return it switch (token) { case VALUE_NULL: return null; case VALUE_FALSE: return Boolean.FALSE; case VALUE_TRUE: return Boolean.TRUE; case VALUE_STRING: return parser.getText(); case VALUE_NUMBER_INT: return parser.getLongValue(); case VALUE_NUMBER_FLOAT: return parser.getDecimalValue(); } } // it is a object or array, process the first JsonToken stack = new Stack(); processJsonToken(token); // process the rest of the object or array while (depth > 0) { token = parser.nextToken(); processJsonToken(token); } return currentContext.getValue(); }
@Override public T jsonRead(JsonParser parser) throws IOException { switch (parser.getCurrentToken()) { case VALUE_NUMBER_INT: { return convertFromMillis(parser.getLongValue()); } case VALUE_NUMBER_FLOAT: { BigDecimal value = parser.getDecimalValue(); Timestamp timestamp = DecimalUtils.toTimestamp(value); return convertFromTimestamp(timestamp); } default: { String jsonDateTime = parser.getText(); return convertFromTimestamp(dateTimeParser.parse(jsonDateTime)); } } }