Il 11/02/2015 16:11, Marc Mutz ha scritto:
If Qt produces 64-bit integers in its JSON output, then the next bug report
will (probably rightfully) be that Qt's JSON output cannot be read by some
JavaScript library X.

Note that it's perfectly legal, and a "feature" of JSON:

https://tools.ietf.org/html/rfc7158#section-6

   This specification allows implementations to set limits on the range
   and precision of numbers accepted.  Since software that implements
   IEEE 754-2008 binary64 (double precision) numbers [IEEE754] is
   generally available and widely used, good interoperability can be
   achieved by implementations that expect no more precision or range
   than these provide, in the sense that implementations will
   approximate JSON numbers within the expected precision.  A JSON
   number such as 1E400 or 3.141592653589793238462643383279 may indicate
   potential interoperability problems, since it suggests that the
   software that created it expects receiving software to have greater
   capabilities for numeric magnitude and precision than is widely
   available.

   Note that when such software is used, numbers that are integers and
   are in the range [-(2**53)+1, (2**53)-1] are interoperable in the
   sense that implementations will agree exactly on their numeric
   values.

So Qt is totally right at accepting an arbitrary range, and another JS library would be right at not accepting the numbers that Qt outputs.

But even with this total mis-specification (just say it's IEEE754 doubles and make JS a normative reference already!), I'd rather not go down that road and avoid integer-based APIs for QJsonValue (to the point of deprecating the existing qint64 constructor; I won't make that call though). And, with the reasonable assumption that the accepted values are JS numbers (minus NaN/infinity), which nowadays is probably the equivalent of saying that an int is 32 bits, then sending out 64-bit ids as numbers is a flaw that has to be corrected on sender's side.

--
Giuseppe D'Angelo | giuseppe.dang...@kdab.com | Software Engineer
KDAB (UK) Ltd., a KDAB Group company
Tel. UK +44-1738-450410, Sweden (HQ) +46-563-540090
KDAB - Qt Experts - Platform-independent software solutions

Attachment: smime.p7s
Description: Firma crittografica S/MIME

_______________________________________________
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development

Reply via email to