Skip to content

Commit 88b2086

Browse files
committed
Fixed #1453
1 parent f506acf commit 88b2086

4 files changed

Lines changed: 687 additions & 8 deletions

File tree

release-notes/VERSION

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ Project: jackson-databind
44
=== Releases ===
55
------------------------------------------------------------------------
66

7+
2.8.6 (not yet released)
8+
9+
#1453: `UntypedObjectDeserializer` does not retain `float` type (over `double`)
10+
711
2.8.5 (14-Nov-2016)
812

913
#1417: Further issues with `@JsonInclude` with `NON_DEFAULT`

src/main/java/com/fasterxml/jackson/databind/deser/std/NumberDeserializers.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -430,7 +430,7 @@ public Object deserialize(JsonParser p, DeserializationContext ctxt) throws IOEx
430430
if (ctxt.isEnabled(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS)) {
431431
return p.getDecimalValue();
432432
}
433-
return Double.valueOf(p.getDoubleValue());
433+
return p.getNumberValue();
434434

435435
case JsonTokenId.ID_STRING:
436436
/* Textual values are more difficult... not parsing itself, but figuring

src/main/java/com/fasterxml/jackson/databind/deser/std/UntypedObjectDeserializer.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -255,13 +255,12 @@ public Object deserialize(JsonParser p, DeserializationContext ctxt) throws IOEx
255255
if (_numberDeserializer != null) {
256256
return _numberDeserializer.deserialize(p, ctxt);
257257
}
258-
/* [JACKSON-72]: need to allow overriding the behavior regarding
259-
* which type to use
260-
*/
258+
// Need to allow overriding the behavior regarding which type to use
261259
if (ctxt.isEnabled(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS)) {
262260
return p.getDecimalValue();
263261
}
264-
return p.getDoubleValue();
262+
// as per [databind#1453] should not assume Double but:
263+
return p.getNumberValue();
265264

266265
case JsonTokenId.ID_TRUE:
267266
return Boolean.TRUE;
@@ -319,7 +318,7 @@ public Object deserializeWithType(JsonParser p, DeserializationContext ctxt, Typ
319318
if (ctxt.isEnabled(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS)) {
320319
return p.getDecimalValue();
321320
}
322-
return Double.valueOf(p.getDoubleValue());
321+
return p.getNumberValue();
323322

324323
case JsonTokenId.ID_TRUE:
325324
return Boolean.TRUE;
@@ -523,7 +522,7 @@ public Object deserialize(JsonParser p, DeserializationContext ctxt) throws IOEx
523522
if (ctxt.isEnabled(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS)) {
524523
return p.getDecimalValue();
525524
}
526-
return Double.valueOf(p.getDoubleValue());
525+
return p.getNumberValue();
527526

528527
case JsonTokenId.ID_TRUE:
529528
return Boolean.TRUE;
@@ -566,7 +565,7 @@ public Object deserializeWithType(JsonParser p, DeserializationContext ctxt, Typ
566565
if (ctxt.isEnabled(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS)) {
567566
return p.getDecimalValue();
568567
}
569-
return Double.valueOf(p.getDoubleValue());
568+
return p.getNumberValue();
570569

571570
case JsonTokenId.ID_TRUE:
572571
return Boolean.TRUE;

0 commit comments

Comments
 (0)