@Override public Decimal128 read(JsonReader in) throws IOException { if (in.peek() == JsonToken.NULL) { in.nextNull(); return null; } if (in instanceof BsonReader) { return ((BsonReader) in).unwrap().readDecimal128(); } return Decimal128.parse(in.nextString()); }
private Decimal128 visitNumberDecimalExtendedJson() { verifyToken(JsonTokenType.COLON); Decimal128 value; String decimal128AsString = readStringFromExtendedJson(); try { value = Decimal128.parse(decimal128AsString); } catch (NumberFormatException e) { throw new JsonParseException(format("Exception converting value '%s' to type %s", decimal128AsString, Decimal128.class.getName()), e); } verifyToken(JsonTokenType.END_OBJECT); return value; }
return clazz.cast(new BsonDouble((Double) value).decimal128Value()); } else if (value instanceof String) { return clazz.cast(Decimal128.parse((String) value));
o = Long.valueOf((String) b.get("$numberLong")); } else if (b.containsField("$numberDecimal")) { o = Decimal128.parse((String) b.get("$numberDecimal"));
private Decimal128 visitNumberDecimalConstructor() { verifyToken(JsonTokenType.LEFT_PAREN); JsonToken valueToken = popToken(); Decimal128 value; if (valueToken.getType() == JsonTokenType.INT32 || valueToken.getType() == JsonTokenType.INT64 || valueToken.getType() == JsonTokenType.DOUBLE) { value = valueToken.getValue(Decimal128.class); } else if (valueToken.getType() == JsonTokenType.STRING) { value = Decimal128.parse(valueToken.getValue(String.class)); } else { throw new JsonParseException("JSON reader expected a number or a string but found '%s'.", valueToken.getValue()); } verifyToken(JsonTokenType.RIGHT_PAREN); return value; }
@Test public void read() throws Exception { BsonDocument doc = new BsonDocument(); doc.put("int", new BsonDecimal128(Decimal128.parse(Integer.toString(Integer.MAX_VALUE)))); doc.put("long", new BsonDecimal128(new Decimal128(Long.MAX_VALUE))); doc.put("double", new BsonDecimal128(Decimal128.parse("12.111"))); JsonReader reader = Jsons.asGsonReader(doc); reader.beginObject(); check(reader.nextName()).is("int"); check(reader.peek()).is(JsonToken.NUMBER); check(reader.nextInt()).is(Integer.MAX_VALUE); check(reader.nextName()).is("long"); check(reader.peek()).is(JsonToken.NUMBER); check(reader.nextLong()).is(Long.MAX_VALUE); check(reader.nextName()).is("double"); check(reader.peek()).is(JsonToken.NUMBER); check(reader.nextDouble()).is(12.111D); reader.endObject(); reader.close(); }
@Override public void encode(BsonWriter writer, String value, EncoderContext encoderContext) { writer.writeDecimal128(Decimal128.parse(value)); }
@Override public Decimal128 read(JsonReader in) throws IOException { if (in.peek() == JsonToken.NULL) { in.nextNull(); return null; } if (in instanceof BsonReader) { return ((BsonReader) in).unwrap().readDecimal128(); } return Decimal128.parse(in.nextString()); }
o = Long.valueOf((String) b.get("$numberLong")); } else if (b.containsField("$numberDecimal")) { o = Decimal128.parse((String) b.get("$numberDecimal"));
OBJ_MAP_1.put("myDecimal", Decimal128.parse("12345.6789"));