JSON support for BigInt in Chrome/V8

Isiah Meadows isiahmeadows at gmail.com
Wed Jul 18 04:16:12 UTC 2018

The way this conversation is going, we might as well just create a
schema-based JSON serialization DSL for both parsing and stringifying.
But I don't really see that as helpful in the *language itself* at
least as a mandatory part of the spec (maybe an optional built-in

I've in the past few months seen similar things come up a few times
already. I like the idea of a built-in schema-based JSON validator +
parser (it'd be faster than what we currently have), but most things
out there suck in some way, mostly just being boilerplatey, and
there's a lot of design work to get out of the way first before you
can come up with something that doesn't.

But as it stands, the only things I'd support for the `JSON` global itself are:

1. Adding separate prototypes for `JSON.stringify(source, options)`
and `JSON.parse(source, options)`, so it's easier to extend and
comprehend the arguments.
2. Adding an option to parse anything consisting of purely digits (no
exponent or decimal) as a BigInt, regardless of size.
3. Adding an option to stringify BigInts into integer-only numbers and
normal numbers into unconditional floats.

These could be either separate methods or part of a 4th options argument.


Isiah Meadows
me at isiahmeadows.com

On Tue, Jul 17, 2018 at 6:52 PM, Michael J. Ryan <tracker1 at gmail.com> wrote:
> Out of bounds as you'd still have to parse it, but for encoding, could add
> BigInt.prototype.toJSON ...
> On Tue, Jul 17, 2018, 15:44 Andrea Giammarchi <andrea.giammarchi at gmail.com>
> wrote:
>> I guess a better example would've been `Boolean('false')` returns true,
>> but yeah, I've moved slightly forward already with everything, if you read
>> other messages.
>> Regards.
>> On Wed, Jul 18, 2018 at 12:06 AM Waldemar Horwat <waldemar at google.com>
>> wrote:
>>> On 07/17/2018 04:27 AM, Andrea Giammarchi wrote:
>>> > actually, never mind ... but I find it hilarious that
>>> > BigInt('55555555555555555550000000000000000000001') works but
>>> > BigInt('55555555555555555550000000000000000000001n') doesn't ^_^;;
>>> That's no different from how other built-in types work.  String('"foo"')
>>> doesn't give you the same string as the string literal "foo".
>>>      Waldemar
>> _______________________________________________
>> es-discuss mailing list
>> es-discuss at mozilla.org
>> https://mail.mozilla.org/listinfo/es-discuss
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss

More information about the es-discuss mailing list