diff --git a/pom.xml b/pom.xml index 81f5c3c2c..96a9e3f8f 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ org.json json - 20250517 + 20250531 bundle JSON in Java diff --git a/src/main/java/org/json/XML.java b/src/main/java/org/json/XML.java index 4bf475935..6e18ee068 100644 --- a/src/main/java/org/json/XML.java +++ b/src/main/java/org/json/XML.java @@ -522,6 +522,9 @@ private static boolean isStringAllWhiteSpace(final String s) { */ private static Number stringToNumber(final String val) throws NumberFormatException { char initial = val.charAt(0); + if (val.indexOf('e') != -1 || val.indexOf('E') != -1) { + throw new NumberFormatException("Scientific notation not supported: [" + val + "]"); + } if ((initial >= '0' && initial <= '9') || initial == '-') { // decimal representation if (isDecimalNotation(val)) { diff --git a/src/test/java/org/json/junit/XMLTest.java b/src/test/java/org/json/junit/XMLTest.java index 2fa5daeea..72586d6f6 100644 --- a/src/test/java/org/json/junit/XMLTest.java +++ b/src/test/java/org/json/junit/XMLTest.java @@ -1419,7 +1419,7 @@ public void clarifyCurrentBehavior() { // and is probably a bug. JSONObject has a similar problem. String str2 = " primary 008E97 "; JSONObject jsonObject2 = XML.toJSONObject(str2); - assertEquals(jsonObject2.getJSONObject("color").getLong("value"), 0e897, .1); + assertEquals(jsonObject2.getJSONObject("color").getString("value"), "008E97"); // Workaround for now is to use keepStrings JSONObject jsonObject3 = XML.toJSONObject(str2, new XMLParserConfiguration().withKeepStrings(true));