參考博客
https://blog.csdn.net/cpp_learner/article/details/118421096
1 打開文件,讀取全部內容
QFile file("../Json/js.json");
if (!file.open(QFile::ReadOnly | QFile::Text)) {qDebug() << "can't open error!";return;
}// 讀取文件的全部內容
QTextStream stream(&file);
stream.setCodec("UTF-8"); // 設置讀取編碼是UTF8
QString str = stream.readAll();file.close();
2 將字符串解析成QJsonDocument對象
// QJsonParseError類用于在JSON解析期間報告錯誤。
QJsonParseError jsonError;
// 將json解析為UTF-8編碼的json文檔,并從中創建一個QJsonDocument。
// 如果解析成功,返回QJsonDocument對象,否則返回null
QJsonDocument doc = QJsonDocument::fromJson(str.toUtf8(), &jsonError);
// 判斷是否解析失敗
if (jsonError.error != QJsonParseError::NoError && !doc.isNull()) {qDebug() << "Json格式錯誤!" << jsonError.error;return;
}
3 獲取JSON根{}對象
QJsonObject rootObj = doc.object();
4 根據鍵獲取值
// 根據鍵獲取值
QJsonValue nameValue = rootObj.value("name");
qDebug() << "name = " << nameValue.toString();QJsonValue ageValue = rootObj.value("age");
qDebug() << "age = " << ageValue.toInt();
// 解析 bool類型
QJsonValue vipValue = rootObj.value("vip");
qDebug() << "vip = " << vipValue.toBool();// 解析 null類型
QJsonValue addressValue = rootObj.value("address");
if (addressValue.type() == QJsonValue::Null) {qDebug() << "address = " << "null";
}
5 解析對象 { }
QJsonValue interestValue = rootObj.value("interest");
// 判斷是否是object類型
if (interestValue.type() == QJsonValue::Object) {// 轉換為QJsonObject類型QJsonObject interestObj = interestValue.toObject();QJsonValue basketballValue = interestObj.value("basketball");qDebug() << "basketball = " << basketballValue.toString();QJsonValue badmintonValue = interestObj.value("badminton");qDebug() << "badminton = " << badmintonValue.toString();
}
QML解析Json文件來更換語言
自己寫一個map 重載translate
https://blog.csdn.net/tanxuan231/article/details/125442789#