如何将QJsonObject转换为QString

47
我有一个QJsonObject数据,想要转换成QString。我该如何做?在Qt中寻找帮助,它只能将QJsonObject转换为QVariantMap...提前感谢。

1
你要找的类是QJsonDocument:http://doc.qt.io/qt-5/qjsondocument.html - MrEricSir
3个回答

105

记得当我第一次需要做这件事时,文档可能有点不足,并且假设你有其他QJson类的知识。

要获取QJsonObject的QString,您需要使用QJsonDocument类,像这样:-

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

QJsonDocument doc(jsonObj);
QString strJson(doc.toJson(QJsonDocument::Compact));

7
可能需要提到的是,QJsonDocument::toJson()返回一个UTF-8格式的QByteArray - marcbf

6
我们可以在一行代码中完成这个操作。
QString strFromObj = QJsonDocument(jsonObject).toJson(QJsonDocument::Compact).toStdString().c_str();

2
QString strFromObj = QJsonDocument(jsonObject).toJson(QJsonDocument::Compact); 或者 - Anonymouse

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);

或者更好的方法是,根据TheDarkKnight的示例,只需使用QLatin1String(QByteArray&)
QJsonDocument doc(jsonObj);
QByteArray docByteArray = doc.toJson(QJsonDocument::Compact);
Qstring strJson = QLatin1String(docByteArray);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接