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

Reply via email to