我有一个JSON字符串
{
"FirstName": "John",
"LastName": "Doe",
"Age": 43,
"Address": {
"Street": "Downing Street 10",
"City": "London",
"Country": "Great Britain"
},
"Phone numbers": [
"+44 1234567",
"+44 2345678"
]
}
在QString变量中。 我发现(在Stackoverflow中的某处)是一种格式化XML的方法:
QString responseData = "";
responseData = networkResponse->readAll();
QString formattedXMLResponse;
QDomDocument input;
input.setContent(responseData);
QDomDocument output(input);
QTextStream stream(&formattedXMLResponse);
output.save(stream, 2);
ui->outputTB->setPlainText(formattedXMLResponse);
但是这段代码只适用于XML。 有什么想法可以格式化JSON吗?
答案 0 :(得分:5)
QJsonDocument将格式设置为toJson函数,允许您指定compact or indented format。
假设您在名为jsonObj的QJsonObject中有JSON: -
QJsonDocument doc(jsonObj);
QString jsonString = doc.toJson(QJsonDocument::Indented);
或者,从QString: -
QJsonDocument doc = QJsonDocument::fromJson(jsonString.toUtf8());
QString formattedJsonString = doc.toJson(QJsonDocument::Indented);
答案 1 :(得分:1)
如果您使用Qt 4,则可以使用QJson lib。
在这种情况下,用法如下:
QJson::Parser parser;
bool ok;
QVariantMap result = parser.parse (responseData, &ok).toMap();
if (!ok) {
qFatal("An error occurred during parsing");
exit (1);
}