|
1 | 1 | package co.casterlabs.rakurai.json.deserialization; |
2 | 2 |
|
3 | | -import static co.casterlabs.rakurai.CharStrings.*; |
| 3 | +import static co.casterlabs.rakurai.CharStrings.strcontainsonly; |
| 4 | +import static co.casterlabs.rakurai.CharStrings.strcpy; |
| 5 | +import static co.casterlabs.rakurai.CharStrings.strdropchars; |
| 6 | +import static co.casterlabs.rakurai.CharStrings.strequals; |
| 7 | +import static co.casterlabs.rakurai.CharStrings.strfindex; |
| 8 | + |
| 9 | +import java.math.BigDecimal; |
| 10 | +import java.math.BigInteger; |
4 | 11 |
|
5 | 12 | import co.casterlabs.rakurai.json.Rson.RsonConfig; |
6 | 13 | import co.casterlabs.rakurai.json.element.JsonNumber; |
@@ -49,11 +56,20 @@ public ParsedTokenPair readToken(char[] in, int skip, @NonNull RsonConfig settin |
49 | 56 |
|
50 | 57 | try { |
51 | 58 | if ((strfindex(read, '.') == -1) && (strfindex(read, 'E') == -1) && (strfindex(read, 'e') == -1)) { |
52 | | - value = Long.parseLong(num); |
| 59 | + try { |
| 60 | + value = Long.parseLong(num); |
| 61 | + } catch (NumberFormatException ignored) { |
| 62 | + value = new BigInteger(num); // See if it's a big integer instead... |
| 63 | + } |
53 | 64 | } else { |
54 | | - value = Double.parseDouble(num); |
| 65 | + try { |
| 66 | + value = Long.parseLong(num); |
| 67 | + } catch (NumberFormatException ignored) { |
| 68 | + value = new BigDecimal(num); // See if it's a big decimal instead... |
| 69 | + } |
55 | 70 | } |
56 | 71 | } catch (NumberFormatException e) { |
| 72 | + e.printStackTrace(); |
57 | 73 | throw new JsonLexException(); |
58 | 74 | } |
59 | 75 | } else { |
|
0 commit comments