Den 11-02-2015 kl. 11:58 skrev Giuseppe D'Angelo: > On 11 February 2015 at 11:40, Bo Thorsen <b...@vikingsoft.eu> wrote: >> {"i":1e33} gives a 0 if I convert the number to int (which is fair >> enough). If I convert to variant, it gives me a double. > > Because it _is_ a double, given that JSON is a subset of Javascript, > and numbers in Javascript are IEEE754 64bit floating point numbers. > (And it's also a strict subset, given that JSON omits the handling of > +/- infinity and NaN...). I'm not too happy with the fact that > QJsonValue has "int" in its API...
I know this is the history of JSON, but it's no longer the reality. The use of JSON are all over the place now and they are not restricting themselves to Javascript numbers. You can find requests in the bug tracker for what I just asked about - JSON is no longer just about Javascript. We have one of two choices here: Follow a restrictive schema that is no longer a description of how it's used. Or follow what users outside of the Javascript world would like to have. It's so easy to say we just follow the standard. But I have two current projects where my customers say they send me a 64 bit database ID in a JSON value. Converting those through a double might work, but can you guarantee this? Yes, they do something that's wrong. But this is how I see JSON used these days. Restricting the JSON values to a set of types from one of the simplest typesystems found in programming languages is just silly IMHO. If I say to my customers they have to send me another language because the Qt JSON library can't read 64 bit unsigned integers they say "Qt sucks, switch to another JSON library.". We can't win here. Well, there's actually a third option: Give me the original QByteArray that the value comes from. If there was a way to get this, I can convert the value any way I want. Something like "QByteArray bytes() const" would allow for any kind of parsing on our side. I'd be fine with this as a workaround that would allow us to stay with the spec. Bo Thorsen, Director, Viking Software. -- Viking Software Qt and C++ developers for hire http://www.vikingsoft.eu _______________________________________________ Development mailing list Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development