Personally, I would like to see: - third argument to JSON.parse reviver, "raw string" - new class JSON.Fragment accepting any syntactically valid JSON in constructor (eg. new JSON.Fragment('99999999999999999') - returning JSON.Fragment from JSON.stringify would paste it as-it-is into string output
This should cover any Bigint use case without breaking backward compatibility. On Tue, 14 Aug 2018, 07:57 Anders Rundgren, <anders.rundgren....@gmail.com> wrote: > 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 < > anders.rundgren....@gmail.com <mailto:anders.rundgren....@gmail.com>> > 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 > > es-discuss@mozilla.org <mailto:es-discuss@mozilla.org> > > https://mail.mozilla.org/listinfo/es-discuss > > > > > > > > _______________________________________________ > > es-discuss mailing list > > es-discuss@mozilla.org > > https://mail.mozilla.org/listinfo/es-discuss > > > > _______________________________________________ > es-discuss mailing list > es-discuss@mozilla.org > https://mail.mozilla.org/listinfo/es-discuss >
_______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss