Support negative floating point exponent values in JSONSerializer.


git-svn-id: https://svn.apache.org/repos/asf/pivot/branches/1.5.x@1036009 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/core/src/org/apache/pivot/json/JSONSerializer.java b/core/src/org/apache/pivot/json/JSONSerializer.java
index f8748bf..46012af 100644
--- a/core/src/org/apache/pivot/json/JSONSerializer.java
+++ b/core/src/org/apache/pivot/json/JSONSerializer.java
@@ -382,7 +382,7 @@
         }
 
         while (c != -1 && (Character.isDigit(c) || c == '.'
-            || c == 'e' || c == 'E')) {
+            || c == 'e' || c == 'E' || c == '-')) {
             stringBuilder.append((char)c);
             integer &= !(c == '.');
             c = reader.read();
diff --git a/core/test/org/apache/pivot/json/test/JSONSerializerTest.java b/core/test/org/apache/pivot/json/test/JSONSerializerTest.java
index 8be6881..e841f68 100644
--- a/core/test/org/apache/pivot/json/test/JSONSerializerTest.java
+++ b/core/test/org/apache/pivot/json/test/JSONSerializerTest.java
@@ -52,6 +52,12 @@
     }
 
     @Test
+    public void testE() throws SerializationException {
+        assertEquals(5000000, JSONSerializer.parseDouble("5.0E6"), 0);
+        assertEquals(0.000005, JSONSerializer.parseDouble("5.0E-6"), 0);
+    }
+
+    @Test
     public void testEquals() throws IOException, SerializationException {
         JSONSerializer jsonSerializer = new JSONSerializer();
         Object o1 = jsonSerializer.readObject(getClass().getResourceAsStream("sample.json"));