I've added support (compile time option [1]) for long and BigInt in the
lexer (and parser), see [2]. JSONValue currently still only stores
double for numbers. There are two options for extending JSONValue:
1. Add long and BigInt to the set of supported types for JSONValue. This
preserves all features of Algebraic and would later still allow
transparent conversion to other similar value types (e.g. BSONValue). On
the other hand it would be necessary to always check the actual type
before accessing a number, or the Algebraic would throw.
2. Instead of double, store a JSONNumber in the Algebraic. This enables
all the transparent conversions of JSONNumber and would thus be more
convenient, but blocks the way for possible automatic conversions in the
future.
I'm leaning towards 1, because allowing generic conversion between
different JSONValue-like types was one of my prime goals for the new module.
[1]:
http://s-ludwig.github.io/std_data_json/stdx/data/json/lexer/LexOptions.html
[2]:
http://s-ludwig.github.io/std_data_json/stdx/data/json/lexer/JSONNumber.html