如何在QT中将JSON字符串格式化为可读输出

时间:2014-09-22 15:25:24

标签: json qt formatting string-formatting

我有一个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吗?

2 个答案:

答案 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);
}