1.读取Json文档中的值:(代码如下)
QString getJsonParas(QString path, QString firstFlag, QString secondFlag,int index)
{
QString paras="";
QFile file(path);
if (!file.open(QIODevice::ReadOnly)){
qDebug()<<"file.open ReadOnly fail";
return "";
}
//从json文件读取信息
QByteArray allData=file.readAll();
file.close();
//qDebug()<<allData;
QJsonParseError json_error;
QJsonDocument jsonDoc;
jsonDoc=QJsonDocument::fromJson(allData, &json_error);
if(json_error.error != QJsonParseError::NoError)
{
qDebug() << "json error!";
qDebug()<<json_error.errorString();
return paras;
}
QJsonObject rootObj = jsonDoc.object();
QStringList keys = rootObj.keys();
if(rootObj.contains(firstFlag)){
QJsonObject subObj=rootObj.value(firstFlag).toObject();
if(subObj.contains(secondFlag)){
if(!subObj.value(secondFlag).isObject()){
return subObj.value(secondFlag).toString();
}
}
}
else{
for(int i=0;i<keys.size();i++){
QString flag =keys.at(i);
QJsonObject subObj=rootObj.value(flag).toObject();
QStringList keyss=subObj.keys();
if(subObj.contains(firstFlag)){
QJsonArray exchanges=subObj.value(firstFlag).toArray();
QJsonObject exchange=exchanges.at(0).toObject();
if(!exchange.value(secondFlag).isArray()){
return exchange.value(secondFlag).toString();
}
}
// else{
// for(int j=0;j<keyss.size();j++){
// QString flagkey=keyss.at(j);
// QJsonObject subObjs=rootObj.value(flagkey).toObject();
// if(subObjs.contains(firstFlag)){
// QJsonArray queues=subObjs.value(firstFlag).toArray();
// QJsonObject queue=queues.at(index).toObject();
// return queue.value(secondFlag).toString();
// }
// }
// }
}
//
QJsonObject subObj=rootObj.value("virtualhost").toObject();
QJsonArray exchanges=subObj.value("exchanges").toArray();
QJsonObject exchange=exchanges.at(0).toObject();
if(exchange.contains(firstFlag)){
QJsonArray queues=exchange.value(firstFlag).toArray();
QJsonObject queue=queues.at(index).toObject();
if(queue.contains(secondFlag)){
return queue.value(secondFlag).toString();
}
}
subObj=rootObj.value("virtualhost").toObject();
exchanges=subObj.value("exchanges1").toArray();
exchange=exchanges.at(0).toObject();
if(exchange.contains(firstFlag)){
QJsonArray queues=exchange.value(firstFlag).toArray();
QJsonObject queue=queues.at(index).toObject();
if(queue.contains(secondFlag)){
return queue.value(secondFlag).toString();
}
}
}
2.修改json文档中属性的值:(代码如下)
bool setJsonParas(QString path, QString firstFlag, QString secondFlag,int index,QString para)
{
QFile file(path);
if (!file.open(QIODevice::ReadOnly)){
qDebug()<<"file.open ReadOnly fail";
return "";
}
//从json文件读取信息
bool res=false;
QByteArray allData=file.readAll();
file.close();
QJsonParseError json_error;
QJsonDocument jsonDoc;
jsonDoc=QJsonDocument::fromJson(allData, &json_error);
if(json_error.error != QJsonParseError::NoError)
{
qDebug() << "json error!";
qDebug()<<json_error.errorString();
return res;
}
QJsonObject rootObj = jsonDoc.object();
QStringList keys = rootObj.keys();
if(rootObj.contains(firstFlag)){
QJsonObject subObj=rootObj.value(firstFlag).toObject();
if(subObj.contains(secondFlag)){
QJsonValue jsonvalue(para);
subObj.insert(secondFlag,jsonvalue);
res=true;
QJsonValue subvalue(subObj);
rootObj.insert(firstFlag,subvalue);
}
}
else{
for(int i=0;i<keys.size();i++){
QString key=keys.at(i);
QJsonObject subObj=rootObj.value(key).toObject();
if(subObj.contains(firstFlag)){
QJsonArray subObjarray=subObj.value(firstFlag).toArray();
QJsonObject subOjs=subObjarray.at(0).toObject();
if(subOjs.contains(secondFlag)){
QJsonValue jsonvalue(para);
subOjs.insert(secondFlag,jsonvalue);
res=true;
QJsonArray jsonArray;
QJsonValue subsValue(subOjs);
jsonArray.insert(0,subsValue);
QJsonValue subValue(jsonArray);
subObj.insert(firstFlag,subValue);
QJsonValue rootValue(subObj);
rootObj.insert(key,rootValue);
}
}
}
}
QJsonObject subObj=rootObj.value("virtualhost").toObject();
QJsonArray subArray=subObj.value("exchanges").toArray();
QJsonObject subsObj=subArray.at(0).toObject();
if(subsObj.contains(firstFlag)){
QJsonArray subObjArray=subsObj.value(firstFlag).toArray();
QJsonObject subObj1=subObjArray.at(index).toObject();
if(subObj1.contains(secondFlag)){
QJsonValue jonsvalue(para);
subObj1.insert(secondFlag,jonsvalue);
res=true;
QJsonValue subvalue1(subObj1);
subObjArray.removeAt(index);
subObjArray.insert(index,subvalue1);
QJsonValue subsvalue(subObjArray);
subsObj.insert(firstFlag,subsvalue);
QJsonValue subsObjvalue(subsObj);
subArray.removeAt(0);
subArray.insert(0,subsObjvalue);
QJsonValue subvalue(subArray);
subObj.insert("exchanges",subvalue);
QJsonValue rootvalue(subObj);
rootObj.insert("virtualhost",rootvalue);
}
}
if(res==false){
return res;
}
QFile filejson(path);
if( !filejson.open( QFile::WriteOnly | QFile::Truncate) ){
qWarning("error::ParserXML->writeOperateXml->file.open\n");
return false;
}
QJsonDocument json;
json.setObject(rootObj);
QByteArray byte_array = json.toJson();
filejson.write(byte_array);
filejson.close();
return true;
}