Mercurial Hosting > luan
diff core/src/luan/modules/parsers/Json.java @ 759:ae612dfc57cb 0.21
better handling of longs in rpc and json
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Tue, 19 Jul 2016 09:09:41 -0600 |
parents | c29d11d675fd |
children |
line wrap: on
line diff
--- a/core/src/luan/modules/parsers/Json.java Tue Jul 19 00:57:37 2016 -0600 +++ b/core/src/luan/modules/parsers/Json.java Tue Jul 19 09:09:41 2016 -0600 @@ -120,6 +120,7 @@ private Number number() { int start = parser.begin(); + boolean isFloat = false; parser.match('-'); if( !parser.match('0') ) { if( !parser.inCharRange('1','9') ) @@ -130,15 +131,22 @@ if( !parser.inCharRange('0','9') ) return parser.failure(null); while( parser.inCharRange('0','9') ); + isFloat = true; } if( parser.anyOf("eE") ) { parser.anyOf("+-"); if( !parser.inCharRange('0','9') ) return parser.failure(null); while( parser.inCharRange('0','9') ); + isFloat = true; } String s = parser.textFrom(start); - return parser.success(Double.valueOf(s)); + Number n; + if(isFloat) + n = Double.valueOf(s); + else + n = Long.valueOf(s); + return parser.success(n); } private LuanTable array() throws ParseException {