3 ms·
No you don't? The example I gave produces {"a":9007199254740993} not {"a":"9007199254740993"}
by sheept 4mo ago
No you don't? The example I gave produces
{"a":9007199254740993}
not
{"a":"9007199254740993"}
- mort96 4mo agoOh, that's much worse! The JSON string `{"a":9007199254740993}` decodes to the object `{"a":9007199254740992}` with typical JSON parsers like JavaScript's `JSON.parse`.
- sheept 4mo agoIf you're applying a replacer, then you'd supply a reviver when parsing: const json = '{ "a": 9007199254740993 }' JSON.parse(json, (_key, value, context) => /^\d+$/.test(context.source) ? BigInt(context.source) : value)
- mort96 4mo agoYeah but now you have the world's biggest foot gun in your API.