QJsonDocument :: toJson()生成超大文本。有办法解决吗?

时间:2014-11-05 16:34:50

标签: c++ json qt qt5 qjson

我已经创建了将QList<qreal>(非常大的列表)转换为JSON字符串的类,但它会生成一个额外的大文本。

这是代码:

QJsonObject rootObject;
rootObject.insert("Test",0.05);
qDebug()<<QJsonDocument(rootObject).toJson(QJsonDocument::Compact);

我尝试了相同的代码:

QJsonObject rootObject;
rootObject.insert("Test",QString("0.05").toDouble());
qDebug()<<QJsonDocument(rootObject).toJson(QJsonDocument::Compact);

调试ouptut总是:

{"Test":0.050000000000000003}

我想得到这样的短输出:

{"Test":0.05}

有办法修复QJsonDocument吗?或者使一些小数计数舍入/限制?

1 个答案:

答案 0 :(得分:1)

在OS X上,我尝试了以下方法: -

QVariant d(0.5);
QJsonValue val = QJsonValue::fromVariant(d);

qDebug() << val.toDouble();

按预期打印出0.5。

但是,我认为问题是由于floating point precision。 QJSonDocument尽可能准确地表示数字,但没有限制表示的小数位数的功能,如QString中所示。

虽然不理想,但如果你真的想用这种方式表示0.5,你可以写一个字符串值而不是double。