#include "analysisjson.h" #include #include #include #include #include AnalysisJson::AnalysisJson(QString path) { if(QFile::exists(path)){ QFile file(path); if(file.open(QIODevice::OpenModeFlag::ReadOnly)) { m_json = QJsonDocument::fromJson(file.readAll()); file.close(); } } } std::vector AnalysisJson::GetNode() { std::vector nodes; if(!m_json.isObject()) return nodes; auto obj = m_json.object(); for(auto key : obj.keys()) { if(key != "global") nodes.push_back(json_node{obj[key].toObject()["title"].toString(), obj[key].toObject()["name"].toString(), obj[key].toObject()["man"].toBool(), obj[key].toObject()["err-level"].toInt(), obj[key].toObject()["desc"].toString()}); } return nodes; } AnalysisJson::json_global AnalysisJson::GetGlobal() { if(!m_json.isObject()) return json_global(); auto obj = m_json.object()["global"].toObject(); return json_global{obj["vid-org"].toInt(), obj["pid-org"].toInt(), obj["vid-to"].toInt(), obj["pid-to"].toInt()}; } bool AnalysisJson::savejson(QString path, std::vector json) { QFileInfo info(path); if(!info.isFile()) return false; if(!info.dir().exists()) QDir().mkdir(info.dir().path()); QJsonDocument doc; QJsonObject obj; int index =1; for(auto json_ : json) { QJsonObject tmp_obj; tmp_obj["title"] = json_.title; tmp_obj["name"] = json_.name; tmp_obj["man"] = json_.is_man; tmp_obj["err_level"] = json_.err_level; tmp_obj["desc"] = json_.desc; obj[QString::number(index++)] = tmp_obj; } doc.setObject(obj); QFile file(path); if(file.open(QIODevice::OpenModeFlag::WriteOnly)) { file.write(doc.toJson()); file.close(); return true; } return false; } bool AnalysisJson::savejson(QString path, QJsonDocument doc) { QFileInfo info(path); if(!info.isFile()) return false; if(!info.dir().exists()) QDir().mkdir(info.dir().path()); QFile file(path); if(file.open(QIODevice::OpenModeFlag::WriteOnly)) { file.write(doc.toJson()); file.close(); return true; } return false; }