瀏覽代碼

HPCC-14928 Add support for parsing json scientific notation values

Signed-off-by: Anthony Fishbeck <anthony.fishbeck@lexisnexis.com>
Anthony Fishbeck 9 年之前
父節點
當前提交
b2583acdaf
共有 1 個文件被更改,包括 15 次插入2 次删除
  1. 15 2
      system/jlib/jptree.cpp

+ 15 - 2
system/jlib/jptree.cpp

@@ -6407,11 +6407,24 @@ protected:
             if (!isdigit(nextChar))
                 error("Bad value");
             type = elementTypeInteger;
-            while (isdigit(nextChar) || '.'==nextChar)
+            bool exponent = false;
+            while (isdigit(nextChar) || '.'==nextChar || 'e'==nextChar || 'E'==nextChar)
             {
+                if ('e'==nextChar || 'E'==nextChar)
+                {
+                    if (exponent)
+                        error("Bad value");
+                    exponent=true;
+                    value.append(nextChar);
+                    readNext();
+                    if ('-'==nextChar)
+                        type=elementTypeReal;
+                    else if (!isdigit(nextChar) && '+'!=nextChar)
+                        error("Bad value");
+                }
                 if ('.'==nextChar)
                 {
-                    if (type==elementTypeReal) //already found decimal
+                    if (exponent || type==elementTypeReal) //already found decimal
                         error("Bad value");
                     type = elementTypeReal;
                 }