No you don't? The example I gave produces
{"a":9007199254740993}
not {"a":"9007199254740993"} {"a":9007199254740993}
not {"a":"9007199254740993"} const json = '{ "a": 9007199254740993 }'
JSON.parse(json, (_key, value, context) => /^\d+$/.test(context.source) ? BigInt(context.source) : value)