.h
#include<QJsonArray>
#include<QFile>
#include<QJsonDocument>
#include<QJsonObject>
#include<QDebug>
class LocalJsonFileAnalysis{
public:
static bool load(const QString& _filePath);
static QString findJsonElement(QString _elementValue);
private:
static QJsonArray m_config;
};
.cpp
QJsonArray LocalJsonFileAnalysis::m_config = QJsonArray();
bool LocalJsonFileAnalysis::load(const QString& _filePath)
{
QFile configFile(_filePath);
if(!configFile.exists()){
qWarning()<<"Local Json File is not exists;"<<endl;
return false;
}
if(!configFile.open(QIODevice::ReadOnly)){
qWarning<<"Couldn't open config file;"<<endl;
return false;
}
QJsonParseError jsonerror;
QJsonDocument doc = QJsonDocument::fromJson(configFile. readAll(),&error);
if(jsonerror.error == QJsonParseError::NoError){
if(doc.isArray()){
configFile = doc.array();
return true;
} else{
qWarning()<<jsonerror.errorString();
return false;
}}}
QString LocalJsonFileAnalysis::findJsonElement(QString _elementValue)
{
QString res,name;
int language,math,english;
for( int i = 0;i<m_config.size();i++)
{
if(m_config.at(i).isObject()){
auto cfg = m_config.at(i).toObject().toVariantMap;
name = QString::fromStdString(cfg[QLatin1Literal("name")]);
cout<<name<<endl;
auto jAarry = cfg[QLatin1Literal("grade")].toList()
for(int j = 0;j<jArray.size();j++){
auto grade = jAarry.at(j).toMap();
language = grade[QLatin1Literal("language")];
cout<<language<<endl;
math = grade[QLatin1Literal("math")];
cout<<math<<endl;
english = grade[QLatin1Literal("english");
cout<<english<<endl;
}
}
}
}
Json文件格式如下:
s[
{
"name": "张三",
"grade":[
"language": 99,
"math": 89,
"English"29
]
},
{
"name": "李四",
"grade":[
"language": 39,
"math": 29,
"English"129
]
}
]