The main use is QJson.
save json
QJsonObject jsonObject, filterObj;
QJsonArray jsonArrayList, jsonArrayFive, jsonArraySix, jsonArrayOther;
QJsonValue filterValue;
QStringList delList, usrList, fiveList, sixList;
delList = ui->delEdit->text().simplified().remove(QRegExp("\\s")).split(",");
for (int cnt = delList.count() - 1; cnt >= 0; cnt--) {
if (delList.at(cnt).isEmpty()) {
delList.removeAt(cnt);
} else {
jsonArrayList.insert(0, delList.at(cnt));
}
}
jsonObject.insert("删除表头", jsonArrayList);
filterObj.insert("六级部门", jsonArraySix);
usrList = ui->filterUserEdit->toPlainText()
.simplified()
.remove(QRegExp("\\s"))
.split(",");
for (int cnt = usrList.count() - 1; cnt >= 0; cnt--) {
if (usrList.at(cnt).isEmpty()) {
usrList.removeAt(cnt);
} else {
jsonArrayOther.insert(0, usrList.at(cnt));
}
}
filterObj.insert("自定义区域", jsonArrayOther);
jsonObject.insert("筛选列", filterObj);
QJsonDocument jsonDoc;
jsonDoc.setObject(jsonObject);
QFile tmpFile(configFile);
/* 写入文件格式 */
if (false == tmpFile.open(QIODevice::WriteOnly | QIODevice::Text)) {
QMessageBox::information(
this,
"警告:", QString("配置文件创建失败:%1").arg(tmpFile.errorString()));
return;
}
tmpFile.write(jsonDoc.toJson());
tmpFile.close();
read json
do {
QByteArray fileData;
QFile jsonFile(configFile);
if (false == jsonFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
QMessageBox::information(
this,
"警告:", QString("配置文件无法打开:%1").arg(jsonFile.errorString()));
break;
}
fileData = jsonFile.readAll();
jsonFile.close();
/* 加载数据到界面 */
/* 读取五,六级部门 json文件 */
QJsonParseError jsonError;
QJsonDocument doc(QJsonDocument::fromJson(fileData, &jsonError));
if (jsonError.error != QJsonParseError::NoError) {
break;
}
/* 解析 */
if (doc.isNull()) {
QMessageBox::information(
this, "配置加载错误:", QString("%1\n文件为空!").arg(configFile));
break;
}
if (false == doc.isObject())
break;
QJsonObject objRoot = doc.object();
if (objRoot.isEmpty())
break;
QJsonObject jsonObject, filterObj;
QJsonArray delJsonArray, usrJsonArray, fiveJsonArray, sixJsonArray;
QJsonValue delListValue, usrListValue, fiveListValue, sixListValue;
QStringList delList, usrList, fiveList, sixList;
if (objRoot.contains("删除表头")) {
delListValue = objRoot.value("删除表头");
delJsonArray = delListValue.toArray();
for (int cnt = 0; cnt < delJsonArray.count(); cnt++) {
delList << delJsonArray.at(cnt).toString();
}
ui->delEdit->setText(delList.join(","));
}
if (objRoot.contains("筛选列")) {
QJsonObject objFilter = objRoot.value("筛选列").toObject();
if (objFilter.isEmpty())
break;
// index = objFilter.toVariantList().indexOf(QString("自定义区域"));
if (objFilter.contains("自定义区域")) {
usrListValue = objFilter.value("自定义区域");
usrJsonArray = usrListValue.toArray();
for (int cnt = 0; cnt < usrJsonArray.count(); cnt++) {
usrList << usrJsonArray.at(cnt).toString();
}
ui->filterUserEdit->setPlainText(usrList.join(","));
}
}
} while (0);
json file effect:
{
"删除表头": [
"一级部门",
"二级部门",
"三级部门",
"四级部门"
],
"筛选列": {
"五级部门": [
"商丘",
"许昌",
"周口"
],
"六级部门": [
"开封",
"开封二区",
"新郑"
],
"自定义区域": [
"开封",
"开封二区",
"新郑"
]
}
}