> Not serializing BigInt is questionable to me but even that can be solved in 
> userland.

This is pretty easy for `JSON.stringify`, at least: you specify a
reviver that coerces them to numbers:

```js
JSON.stringify(object, null, (k, v) => typeof v === "bigint" ? Number(v) : v)
```

The deserialization of that is trickier, but it's easy worked around.

-----

Isiah Meadows
[email protected]
www.isiahmeadows.com

On Sat, Jul 28, 2018 at 9:56 AM, Michael Theriot
<[email protected]> wrote:
>
> In a language with arbitrary integer precision, Python 3 for example, the way 
> to parse a "BigInt" would just be a plain, human readable number without 
> quotes. The way to serialize it is the same. Any other kind of representation 
> is out of spec, a workaround, and belongs in userland.
>
> I think BigInt should serialize the same, not as strings or anything that is 
> not a number. JSON.parse being unable to parse back into BigInt is a separate 
> issue. It is solvable by using better parsing methods, not the convenient 
> built-in one which has other issues. E.g. a streaming JSON parser that lets 
> you inspect the key name and string being parsed can handle this. Case solved 
> and you can also redesign your code so you are not creating a temporary 
> object every single parse that you most likely copy into actual objects later.
>
> Not serializing BigInt is questionable to me but even that can be solved in 
> userland.
>
> On Saturday, July 14, 2018, Anders Rundgren <[email protected]> 
> wrote:
>>
>> var small = BigInt("5");
>> var big = BigInt("5555555555555555555555555500003");
>> JSON.stringify([big,small]);
>> VM330:1 Uncaught TypeError: Do not know how to serialize a BigInt
>>     at JSON.stringify (<anonymous>)
>>     at <anonymous>:1:6
>>
>> JSON Number serialization has apparently reached a new level (of confusion).
>>
>> Personally I don't see the problem.  XML did just fine without hard-coded 
>> data types.
>>
>> The JSON type system is basically a relic from JavaScript.  As such it has 
>> proved to be quite useful.
>> However, when you are outside of that scope, the point with the JSON type 
>> system gets pretty much zero since you anyway need to map extended types.
>>
>> Oracle's JSON-B solution which serializes small values as Number and large 
>> values as String rather than having a unified serialization based on the 
>> underlying data type seems like a pretty broken concept although indeed 
>> fully conforming to the JSON specification. "Like the Devil reads the Bible" 
>> as we say in Scandinavia :-)
>>
>> Adding a couple of double quotes is a major problem?  If so, it seems like a 
>> way more useful project making quotes optional for keys (named in a specific 
>> way), like they already are in JavaScript.
>>
>> Yeah, and of course adding support for comments.
>>
>> Anders
>>
>> _______________________________________________
>> es-discuss mailing list
>> [email protected]
>> https://mail.mozilla.org/listinfo/es-discuss
>
>
> _______________________________________________
> es-discuss mailing list
> [email protected]
> https://mail.mozilla.org/listinfo/es-discuss
>
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to