38

我有一个 QJsonObject 数据并想转换为 QString。我怎样才能做到这一点?在 Qt 中搜索帮助,它只能将 QJsonObject 转换为 QVariantMap ...

提前致谢。

4

3 回答 3

90

记得当我第一次需要这样做时,文档可能有点缺乏,并假设您了解其他 QJson 类。

要获取 QJsonObject 的 QString,您需要使用 QJsonDocument 类,如下所示:-

QJsonObject jsonObj; // assume this has been populated with Json data

QJsonDocument doc(jsonObj);
QString strJson(doc.toJson(QJsonDocument::Compact));
于 2015-01-28T11:23:14.320 回答
3

我们可以在一行中做到这一点

QString strFromObj = QJsonDocument(jsonObject).toJson(QJsonDocument::Compact).toStdString().c_str();
于 2020-06-05T09:38:53.037 回答
0

启用宏QT_NO_CAST_FROM_ASCII后,您可以执行以下操作:

QJsonDocument doc(jsonObject);
QByteArray docByteArray = doc.toJson(QJsonDocument::Compact);
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
Qstring strJson = codec->toUnicode(docByteArray);

或者更好,只是使用QLatin1String(QByteArray&),基于TheDarkKnight的例子:

QJsonDocument doc(jsonObj);
QByteArray docByteArray = doc.toJson(QJsonDocument::Compact);
Qstring strJson = QLatin1String(docByteArray);
于 2018-10-31T13:29:53.617 回答