QT讀JSON文件步驟,這裡把過程記錄一下,網上大多都是怎麼寫json的,對於讀的,記錄的不多 首先JSON文件格式必須為UTF-8(非UTF-8 with BOM),UTF-8 with BOM 即為UTF-8 前加了BOM標識,會導致解析失敗,報錯內容非法,這時候就將文件保存為UTF-8就好了。 ...
QT讀JSON文件步驟,這裡把過程記錄一下,網上大多都是怎麼寫json的,對於讀的,記錄的不多
- 首先JSON文件格式必須為UTF-8(非UTF-8 with BOM),UTF-8 with BOM 即為UTF-8 前加了BOM標識,會導致解析失敗,報錯內容非法,這時候就將文件保存為UTF-8就好了。
- QT5 解析JSON需要引入頭文件
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonParseError>
- 從文件讀入文本
#include <QFile>
QFile file("./ServerConfig.json");
if(file.open(QIODevice::ReadWrite | QIODevice::Text))//打開文件
{
QByteArray fileContent = file.readAll().data();//提取文本信息
}
- 解析文件內容
QJsonParseError err; //Json 解析錯誤類
QJsonObject jsonObj = QJsonDocument::fromJson(fileContent,&err).object();//將json解析成對象
if(jsonObj.isEmpty())//檢查json是否合法(是否為空)
{
cout <<"[!!!]Abort!Config file Parsing Error"<<endl;
cout << err.errorString().toStdString()<< endl; //Json 解析錯誤信息
return;//當錯誤時,返回
}
else
{
QStringList keys = jsonObj.keys(); //取出關鍵詞列表,如果你的json是動態的,那麼需要靠這個列表取表項
}
if(jsonObj.contains("global"))//global項是否存在
{
jsonObj.value("global").toString();//取出這個項的內容
}
【若JSON為多層嵌套結構,則toString改為toObject,然後,再逐層查找】