Skip to content

Commit 19afe2c

Browse files
pjfanningcowtowncoder
authored andcommitted
fix issue with parsing big numbers
1 parent 5122dd8 commit 19afe2c

File tree

3 files changed

+22
-3
lines changed

3 files changed

+22
-3
lines changed

json-org/src/main/java/com/fasterxml/jackson/datatype/jsonorg/JSONArrayDeserializer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ public JSONArray deserialize(JsonParser p, DeserializationContext ctxt)
6666
array.put(p.getNumberValue());
6767
continue;
6868
case VALUE_NUMBER_FLOAT:
69-
array.put(p.getNumberValue());
69+
array.put(p.getDecimalValue());
7070
continue;
7171
case VALUE_EMBEDDED_OBJECT:
7272
array.put(p.getEmbeddedObject());

json-org/src/main/java/com/fasterxml/jackson/datatype/jsonorg/JSONObjectDeserializer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ public JSONObject deserialize(JsonParser p, DeserializationContext ctxt)
6363
ob.put(fieldName, p.getNumberValue());
6464
continue;
6565
case VALUE_NUMBER_FLOAT:
66-
ob.put(fieldName, p.getNumberValue());
66+
ob.put(fieldName, p.getDecimalValue());
6767
continue;
6868
case VALUE_EMBEDDED_OBJECT:
6969
ob.put(fieldName, p.getEmbeddedObject());

json-org/src/test/java/com/fasterxml/jackson/datatype/jsonorg/SimpleReadTest.java

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import org.json.*;
66

7-
import com.fasterxml.jackson.datatype.jsonorg.JsonOrgModule;
7+
import java.math.BigDecimal;
88

99
public class SimpleReadTest extends ModuleTestBase
1010
{
@@ -46,4 +46,23 @@ public void testReadArray() throws Exception
4646
JSONArray array2 = array.getJSONArray(6);
4747
assertEquals(0, array2.length());
4848
}
49+
50+
public void testBigInteger() throws Exception
51+
{
52+
ObjectMapper mapper = new ObjectMapper();
53+
mapper.registerModule(new JsonOrgModule());
54+
55+
JSONObject val = mapper.readValue("{\"val\":2e308}", JSONObject.class);
56+
assertEquals(new BigDecimal("2e308").toBigInteger(), val.getBigInteger("val"));
57+
}
58+
59+
public void testBigIntegerArray() throws Exception
60+
{
61+
ObjectMapper mapper = new ObjectMapper();
62+
mapper.registerModule(new JsonOrgModule());
63+
64+
JSONArray array = mapper.readValue("[2e308]", JSONArray.class);
65+
assertEquals(1, array.length());
66+
assertEquals(new BigDecimal("2e308").toBigInteger(), array.getBigInteger(0));
67+
}
4968
}

0 commit comments

Comments
 (0)