读取Json文件其实很简单的,下面我们简单的看看。
准备一个json文件:
{
"name" : "比卡丘不皮",
"Message":
{
"getFirst":[
{ "first" : "hello" },
{ "second" : "world"}
]
},
"json": 100
}
对应代码:
#include <QCoreApplication>
#include <QDebug>
#include <QJsonDocument>
#include <QJsonArray>
#include <QJsonObject>
#include <QByteArray>
#include <QFile>
//Json文件的解析
void readJson()
{
QFile file("./file.json");
if(!file.open(QIODevice::ReadOnly| QIODevice::Text))
{
return;
}
QByteArray array = file.readAll(); //将数据读到array中
QJsonParseError json_error;
QJsonDocument jsonDoc = QJsonDocument::fromJson(array,&json_error);
if(json_error.error == QJsonParseError::NoError)
{
QJsonObject rootObj = jsonDoc.object();
QJsonArray JsonArray;
QString str;
if(rootObj.contains("name") && rootObj.value("name").isString())
{
str = rootObj.value("name").toString();
qDebug() << str ;
}
if(rootObj.contains("json") && rootObj.value("json").isDouble())
{
int num = rootObj.value("json").toInt();
qDebug() << num ;
}
if(rootObj.contains("Message") && rootObj.value("Message").isObject())
{
QJsonObject childJson = rootObj.value("Message").toObject();
JsonArray = childJson.value("getFirst").toArray();
for (int i = 0; i<JsonArray.size();i++)
{
QJsonObject childObj = JsonArray[i].toObject();
if(childObj.contains("first") && childObj.value("first").isString())
{
str = childObj.value("first").toString();
qDebug() << str ;
}
if(childObj.contains("second") && childObj.value("second").isString())
{
str = childObj.value("second").toString();
qDebug() << str ;
}
}
}
}
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
readJson();
return a.exec();
}
输出结果:
简单记录,遇到{} 使用 QJsonObject
在{}内遇到 “ABC”: value rootObj.contains("ABC"),来判断,
遇到 “ ” :[] 为数组,使用 QJsonArray ,其实就是这么简单的,与xml有异曲同工。