On 2018-03-19 08:23, Michał Wadas wrote:
It's workaround.

JSON.parse can't properly parse valid JSON subset.

ZIP codes are not part of JSON specification, arbitrary precision numbers are 
(and JSONs with 64-bit ints are widely used).

Well, you have an comrade at Google (Mike Samuels) who also believe that making 
JSON.parse incompatible with Java, .NET etc. is a good idea although it suffice 
putting such values within a pair of quotes.

Also worth a read: https://tools.ietf.org/html/rfc7493#section-2.2

Anders



Modyfing schema is possible only if you control it and control all of its 
consumers.

BigInt proposal already cover serialisation part.

On Mon, 19 Mar 2018, 08:11 Anders Rundgren, <anders.rundgren....@gmail.com 
<mailto:anders.rundgren....@gmail.com>> wrote:

    On 2018-03-19 07:32, Michał Wadas wrote:
     > Yeah, there are workarounds for passing bigints.
     >
     > Unfortunately, it's workaround, and it doesn't solve the problem -
     > certain valid JSONs can't be properly used in ECMAScript without writing 
JSON parser in user land.

    Hi Michal,

    I wouldn't call it a workaround.

    The idea that there must be a native data type in a message format for each 
data type you can come up with has huge real-world limitations.  Physical 
address descriptors (street, zip, state, etc), don't have native JSON 
counterpart either to take a fully valid example from another application area.

    Using an external (with respect to the parser), mapping schema [1,2] 
addresses these problems in a fully universal and extensible manner.
    toJSON seems to do a good job in the other direction.

    The importance of JSON "Number" is exaggerated.  In the systems I work with 
(Payments), you hardly find a single instance of "Number".  No, it doesn't even work for 
expressing money!

    Anders

    1] Ultra simple/manual: new BigNum(obj.sizeOfTheUniverseInCubicMeters);
    2] Sophisticated: JSON.parseWithSchema(schema, jsonData);

     >
     > On Mon, 19 Mar 2018, 03:33 Anders Rundgren, <anders.rundgren....@gmail.com 
<mailto:anders.rundgren....@gmail.com> <mailto:anders.rundgren....@gmail.com 
<mailto:anders.rundgren....@gmail.com>>> wrote:
     >
     >     On 2018-03-19 02:37, Anders Rundgren wrote:
     >      > On 2018-03-19 02:33, Michał Wadas wrote:
     >      >> Fact: JSON allows arbitrary precision numbers.
     >      >> Problem: JavaScript is unable to express these numbers.
     >      >>
     >      >> Proposed solution: introduce JSON.safeParse. This method will 
work as JSON.parse, but throwing on values that can't be accurately represented by IEEE 
754 64-bit float.
     >      >>
     >      >> Alternative: allow user to specify number class - eg. by adding options 
object with optional method "parseNumber", overwriting default behaviour of using 
builtin number type.
     >      >>
     >      >> Any thoughts on this?
     >      >
     >      > Yes, it is a SUPERBAD idea.
     >
     >     Pardon my unnecessary dismissive response. A more constructive 
response would be:
     >
     >     This is "approximately" the de-facto standard for dealing with 
BigNums and tons of other non-standard types.
     >
     >     var obj = JSON.parse("JSON formatted data");
     >     var val = new BigNum(obj.sizeOfTheUniverseInCubicMeters);
     >
     >     JSON on the wire:
     >     {
     >         "sizeOfTheUniverseInCubicMeters": 
"3.45e+445454545454545776767676676"
     >     }
     >
     >     When TC-39 introduces BigNums in ES, this is the most likely way 
they will address this particular aspect.
     >
     >     Anders
     >
     >
     >      >
     >      > Anders
     >      >
     >      >>
     >      >> _______________________________________________
     >      >> es-discuss mailing list
     >      >> es-discuss@mozilla.org <mailto:es-discuss@mozilla.org> 
<mailto: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

Reply via email to