如何将json字符串格式化为qt

问题描述 投票:0回答:3
{ "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 qt formatting string-formatting
3个回答
16
投票
QJsonDocument

以其

toJson功能采取格式,使您可以指定
组合或缩进格式。
用来让您的json在一个名为
QJsonObject中的json

jsonObj

或来自A
QJsonDocument doc(jsonObj); QString jsonString = doc.toJson(QJsonDocument::Indented);

QString
    

如果您使用QT 4,则可以使用
QJSON

LIB.
在这种情况下,用法将如下:

1
投票
QJsonDocument doc = QJsonDocument::fromJson(jsonString.toUtf8()); QString formattedJsonString = doc.toJson(QJsonDocument::Indented);

sorry可以提出旧线程,但这将是最好的解决方案:

示例JSON对象:

QJson::Parser parser;
bool ok;

QVariantMap result = parser.parse (responseData, &ok).toMap();
if (!ok) {
  qFatal("An error occurred during parsing");
  exit (1);
}

1
投票

QJsonObject json; json["name"] = "Hakan"; json["age"] = 25; json["address"] = QJsonObject{{"street", "Sarıyer"}, {"city", "İstanbul"}}; printJson(json);

输出:

void printJson(QJsonObject json){
    QJsonDocument doc(json);
    QString jsonString = doc.toJson(QJsonDocument::Indented);
    qDebug() << jsonString.toStdString().c_str();
}

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.