You can certainly serialize to a string but knowing when you should revive to a BigInt seems tricky. You could prefix the strings I guess?
How about serializing to an array ["bigint", "170141183460469231731687303715884105727"]? It takes more space, but is easy to recognize, and easy to generalize to other types.
Presumably that could be confusing if you ever happen to have an actual array whose first element is the string "bigint".
Re:BigInt Shipping in Firefox
by hombre_fatal on Thursday May 23, 2019 @01:43PM
(#19994010)
Well, no matter what you do, surely you plan on documenting your API to such a bare bones level that your user isn't racking their brain whether a key is a number or an array of data.
Nah, you just have to also encode all arrays like
["array", [...]]
;-)True, but if you control both the serialisation and deserialisation you can get away with it
Reuse the literal? (postfix with 'n')
Re:BigInt Shipping in Firefox
by bufferoverflow on Thursday May 23, 2019 @01:54PM
(#19994137)
You don't want strings that are "digits..n" to automatically deserialize into bigints. What if you have a string like "8n", which is a tractor model, or "9n", which is a smartphone model?
But it would be nice to have literal 8n to convert to a bigint 8n. That's not in the JSON standard though.
[0] https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe...
[1] https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe...