QJsonDocument :: toJson () генерирует очень большой текст. Есть ли способ это исправить?

Я сделал класс, который конвертировать 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? Или сделать некоторые десятичные числа округлить / ограничить?

3

Решение

На OS X я попробовал следующее: —

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

qDebug() << val.toDouble();

Это печатает 0,5, как и ожидалось.

Тем не менее, я думаю, что проблема связана с точность с плавающей точкой. QJSonDocument представляет число с максимально возможной точностью, но не имеет функции для ограничения числа представляемых десятичных разрядов, как это представлено в QString.

Хотя это и не идеально, если вы действительно хотите, чтобы 0.5 представлялось таким образом, вы можете написать строковое значение вместо double.

1

Другие решения


По вопросам рекламы [email protected]