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

QJsonDocument::toJson() generates extra large text. Is there way to fix it?

本文关键字:文本 解决 toJson QJsonDocument      更新时间:2023-10-16

我创建了一个类,可以将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);

调试组总是:

{"Test":0.050000000000000003}

我想得到这样的短输出:

{"Test":0.05}

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

在OS X上,我尝试了以下操作:-

QVariant d(0.5);
QJsonValue val = QJsonValue::fromVariant(d);
qDebug() << val.toDouble();

这打印出0.5,正如预期的那样。

然而,我认为问题在于浮点精度。QJSonDocument尽可能准确地表示数字,但没有像QString中那样限制所表示的小数位数的功能。

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

相关文章: