5 ms·
I'm just a JS guy trying to understand the world around me and documenting what I find, not trying to be discourteous (or even courteous). I'll add the note abo
by bterlson 2y ago
I'm just a JS guy trying to understand the world around me and documenting what I find, not trying to be discourteous (or even courteous). I'll add the note about Python, thanks for calling it out. FWIW JS does not have a similar capability so I can't add a note there.
- js2 2y agoFair enough! Thank you for the writeup.
- jbboehr 2y ago> FWIW JS does not have a similar capability so I can't add a note there This example on MDN seems to indicate that you can, am I misunderstanding it? const bigJSON = '{"gross_gdp": 12345678901234567890}'; const bigObj = JSON.parse(bigJSON, (key, value, context) => { if (key === "gross_gdp") { // Ignore the value because it has already lost precision return BigInt(context.source); } return value; }); [0]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe...
- js2 2y ago> am I misunderstanding it? The optional `context` parameter is a tc39 proposal. The feature compatibility matrix on the bottom of the MDN page is really confusing because it's showing only when `JSON.parse` was added, not whether the optional `context` parameter is supported. I've confirmed it's available in: - V8 11.4.31 - Node 20.12.0 (with `--harmony`) - Node 21.7.1 (without requiring `--harmony`) - Chrome 123.0.6312.107 But not available in: Firefox 124.0.2 (ironically) Safari 17.3.1 The original blog post linked to the proposal: https://tc39.es/proposal-json-parse-with-source/ https://tc39.es/proposal-json-parse-with-source/ https://github.com/tc39/proposal-json-parse-with-source https://github.com/tc39/proposal-json-parse-with-source This issue links to the various browser engine tracking bugs: https://github.com/tc39/proposal-json-parse-with-source/issues/15#issue-664090651 https://github.com/tc39/proposal-json-parse-with-source/issu... Which are: • Chrome/V8: https://bugs.chromium.org/p/v8/issues/detail?id=12955 https://bugs.chromium.org/p/v8/issues/detail?id=12955 • Firefox/SpiderMonkey: https://bugzilla.mozilla.org/show_bug.cgi?id=1658310 https://bugzilla.mozilla.org/show_bug.cgi?id=1658310 • Safari/JavaScriptCore: https://bugs.webkit.org/show_bug.cgi?id=248031 https://bugs.webkit.org/show_bug.cgi?id=248031
- js2 2y agoThe MDN PR documenting the optional `context` parameter was merged just 2 weeks ago: https://github.com/mdn/content/pull/32697/files https://github.com/mdn/content/pull/32697/files
- pzmarzly 2y agoIn JS, it's a good idea anyway to use some JSON parsing library instead of JSON.parse. With Zod, you can use z.bigint() parser. If you take the "parse any JSON" snippet https://zod.dev/?id=json-type https://zod.dev/?id=json-type and change z.number() to z.bigint(), it should do what you are looking for.