I have made class that convert QList<qreal>
(very big list) to JSON string, but it generates a extra large text.
Here is code:
QJsonObject rootObject;
rootObject.insert("Test",0.05);
qDebug()<<QJsonDocument(rootObject).toJson(QJsonDocument::Compact);
And I have tried equal code:
QJsonObject rootObject;
rootObject.insert("Test",QString("0.05").toDouble());
qDebug()<<QJsonDocument(rootObject).toJson(QJsonDocument::Compact);
And debug ouptut is always:
{"Test":0.050000000000000003}
I want to get short output like this:
{"Test":0.05}
Is there way to fix QJsonDocument
? Or make some decimals count rounding/limit?
On OS X I tried the following: -
QVariant d(0.5);
QJsonValue val = QJsonValue::fromVariant(d);
qDebug() << val.toDouble();
This prints out 0.5, as expected.
However, I think the problem is due to floating point precision. QJSonDocument is representing the number as accurately as possible, but does not have a function to limit the number of decimal places represented, as is present in QString.
Though not ideal, if your really want 0.5 represented this way, you can write a string value instead of the double.