Qt 解析Json
開發環境 Qt5.5.1、Qt Creator 3.5.1

常用的JSON庫
QJSONDocument有效解析后的文檔可以使用!iSNull()判斷。使用isArray()和isObject()來判斷是否包含一個數組或對象。文檔中包含的數組或對象可以使用array()或object()進行檢索,然后讀取或操縱。
代碼如下:
#include
#include
#include
#include
//生成Json
QString generateJsonStr() {
QJsonObject jsonObj;
jsonObj.insert("name", "chy龍神");
jsonObj.insert("age", 24);
jsonObj.insert("man", true);
QJsonDocument document;
document.setObject(jsonObj);
//格式化方式有2種: Compact(壓緊)、Indented(縮進排印的,該方法解析出的QJsonValue會帶\n)
QByteArray byteArr = document.toJson(QJsonDocument::Compact);
QString jsonStr(byteArr);
qDebug()<<"generateJsonStr: "< return byteArr; } //解析Json void parseJsonStr(QString jsonStr) { QJsonParseError jsonParseError; QJsonDocument document = QJsonDocument::fromJson(jsonStr.toUtf8(), &jsonParseError); if(jsonParseError.error == QJsonParseError::NoError) { //isObject()來判斷是否包含一個數組或對象 if(document.isObject()) { QJsonObject jsonObj = document.object(); if(jsonObj.contains("name")) { QJsonValue nameValue = jsonObj.take("name"); //isXXX有7種類型: isArray、isBool、isDouble、isNull、isObject、isString、isUndefined if(nameValue.isString()) { //toXXX有7中類型toArray、toBool、toDouble、toInt、toObject、toString、toVariant qDebug()<<"parseJsonStr(string name): "< } } if(jsonObj.contains("age")) { QJsonValue ageValue = jsonObj.take("age"); //isDouble(包括int、float、double等數值類型) if(ageValue.isDouble()) { qDebug()<<"parseJsonStr(int age): "< } } if(jsonObj.contains("man")) { QJsonValue manValue = jsonObj.take("man"); //isDouble(包括int、float、double等數值類型) if(manValue.isBool()) { qDebug()<<"parseJsonStr(bool man): "< } } } } else { qDebug()<<"parseJsonStr: jsonParseError("< } } //生成JsonArray QString generateJsonArrayStr() { QJsonArray jsonArray; jsonArray.insert(0, QString("chy龍神")); jsonArray.insert(0, 24); jsonArray.insert(2, true); QJsonDocument document; document.setArray(jsonArray); QByteArray byteArray = document.toJson(QJsonDocument::Compact); QString jsonArrayStr(byteArray); qDebug()<<"generateJsonArrayStr: "< return jsonArrayStr; } //解析JsonArray void parseJsonArrayStr(QString jsonArrayStr) { QJsonParseError jsonParseError; QJsonDocument document = document.fromJson(jsonArrayStr.toUtf8(), &jsonParseError); if(jsonParseError.error == QJsonParseError::NoError) { if(document.isArray()) { QJsonArray jsonArray = document.array(); QString str; for(int i=0;i QJsonValue value = jsonArray.at(i); //注意:這里只有是string類型的才能用toSring輸出,如果其他類型用toString會輸出空串 if(value.isString()) { str.append(value.toString()); } else if(value.isDouble()) { str.append(QString::number(value.toDouble())); } else if(value.isBool()) { str.append(value.toBool()); } str.append(", "); } qDebug()<<"parseJsonArrayStr: "< } } else { qDebug()<<"parseJsonArrayStr: jsonParseError("< } } int main(int argc, char *argv[]) { QString jsonStr = generateJsonStr(); parseJsonStr(jsonStr); QString jsonArrayStr = generateJsonArrayStr(); parseJsonArrayStr(jsonArrayStr); return 0; } JSON Qt
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。