Record json read and write

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:

{
    "删除表头": [
        "一级部门",
        "二级部门",
        "三级部门",
        "四级部门"
    ],
    "筛选列": {
        "五级部门": [
            "商丘",
            "许昌",
            "周口"
        ],
        "六级部门": [
            "开封",
            "开封二区",
            "新郑"
        ],
        "自定义区域": [
            "开封",
            "开封二区",
            "新郑"
        ]
    }
}

 

Guess you like

Origin blog.csdn.net/u011624093/article/details/117291832