On 2018-08-14 06:55, J Decker wrote:
my primary usage of json is
https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_client_applications#Using_JSON_to_transmit_objects

in which case JSON.parse( JSON.strinigfy( msg ) ) really needs to result in the 
same sort of thing as the input; although I guess dates do get lost in 
translation anyway, but they could be handled as numbers with a few more 
character exceptions ':','-'(in a number),'Z',' ' the last one (the space) 
complicating the whole thing immensely; there is no meaning of multiple numbers 
without a ',' between them in JSON, so maybe not so impossible.

and given the requirement that seems to be lost, that bigints ONLY interop with 
bigints, they MUST decode the same as their encoding; the JSONnumber type 
almost works; but requires custom code every time bigints are used. (much like 
dates)

what writing a JSON parser taught me, is the type of a variable is the type of 
the data it has; and JSON does a really good job of representing 99% of 
generally communicated types. which makes generic code quite easy... without 
having to respecify/recast the data, the data is already the type it is.

Since the JSON standard doesn't distinguish between a single bit or BigNumber, 
I guess you are proposing extensions to JSON?


but there's certainly fewer of me, than of those that thing everything is 
perfectly fine, and shouldn't evolve as the langugage has.
but then there's 'don't break the net' and 'this could certainy break the net'; 
but since bigints didn't exist before, I guess they shouldn't be added now, 
because sending them to old code would break  the old code.... but actually 
since being added; should also update JSON to support that number type 
(although I guess base JSON doesn't suppose ES6 number encodings like 0x, 0b, 
etc...)

and again, since bigints ONLY interop with other bigints, there should be no 
chance they will get lost in interpretation.

can see JSONnumber can aid application handling; but if you send bigints to an 
application that doesn't support bigints it's not going to work anyway; so why 
not just let existing json.parse throw when it doens't have bigint support?

The proposal is targeting *cross-platform applications* using JSON.  The only 
thing it adds is offering a way to use JSON Number formatting for new numeric 
types, in addition to the quoting schemes which already are fully supported 
(and extensively used as well).

Example: A java class element like `BigInteger big;` used in a JSON context presumes that all 
values targeting "big" should be treated as BigIntger (=BigInt).  However, there are 
different practices for formatting BigIntegers in JSON and they are all "right" :-)

In essence, the proposal's only ambition is making the ES6 JSON object better 
aligned with an already established JSON reality.

Anders

On Mon, Aug 13, 2018 at 12:33 AM Anders Rundgren <[email protected] 
<mailto:[email protected]>> wrote:

    For good or for worse I have written a proposal for 
https://github.com/tc39/proposal-bigint/issues/162
    available at 
https://github.com/cyberphone/es6-bigint-json-support#json-support-for-bigint-in-es6

    Since the proposal doesn't introduce a default serialization mode, I guess 
nobody will be happy :-(
    OTOH, a fairly decent rationale for not specifying a default is also 
provided :-)
    This comment is also worth reading: 
https://github.com/tc39/proposal-bigint/issues/162#issuecomment-409700859


    Cheers,
    Anders
    _______________________________________________
    es-discuss mailing list
    [email protected] <mailto:[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