From 07b2d65e30c4a7ffa789360c2f13e5eb5e417339 Mon Sep 17 00:00:00 2001 From: "John J. Aylward" Date: Wed, 27 Jan 2016 10:39:31 -0500 Subject: [PATCH] Fixes #187 -0 now returns as a double. --- JSONObject.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/JSONObject.java b/JSONObject.java index 2f613f8..7b71f37 100644 --- a/JSONObject.java +++ b/JSONObject.java @@ -30,7 +30,8 @@ import java.io.Writer; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.lang.reflect.Modifier; -import java.math.*; +import java.math.BigDecimal; +import java.math.BigInteger; import java.util.Collection; import java.util.Enumeration; import java.util.HashMap; @@ -1500,7 +1501,8 @@ public class JSONObject { if ((b >= '0' && b <= '9') || b == '-') { try { if (string.indexOf('.') > -1 || string.indexOf('e') > -1 - || string.indexOf('E') > -1) { + || string.indexOf('E') > -1 + || "0".equals(string.substring(1))) { d = Double.valueOf(string); if (!d.isInfinite() && !d.isNaN()) { return d; @@ -1508,11 +1510,10 @@ public class JSONObject { } else { Long myLong = new Long(string); if (string.equals(myLong.toString())) { - if (myLong == myLong.intValue()) { - return myLong.intValue(); - } else { - return myLong; + if (myLong.longValue() == myLong.intValue()) { + return Integer.valueOf(myLong.intValue()); } + return myLong; } } } catch (Exception ignore) {