分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > IT知识

qt json操作

发布时间:2023-09-06 02:02责任编辑:彭小芳关键词:jsjson

json文件结构形式

{
    "xiao1": [
        {
            "000100": {
                "industryCode": "000100",
                "industryName": "test"
            }
        },
        {
            "000101": {
                "industryCode": "000100",
                "industryName": "test"
            }
        },
        {
            "000103": {
                "industryCode": "000100",
                "industryName": "test"
            }
        }
    ],
    "xiaogdsadg": [
        {
            "12321344": {
                "industryCode": "12321344",
                "industryName": "454555"
            }
        },
        {
            "54545445": {
                "industryCode": "54545445",
                "industryName": "454555"
            }
        },
        {
            "454454654": {
                "industryCode": "454454654",
                "industryName": "454555"
            }
        }
    ]
}

//判断指定项是否在json文件里

bool MainWindow:: isInJson(QString userName,QString rowId)
{
 ???QString val;
 ???QFile file;
 ???file.setFileName("F:\\work\\qtProjects\\untitled11\\test123.json");
 ???file.open(QIODevice::ReadOnly| QIODevice::Text);
 ???val = file.readAll();
 ???file.close();
 ???QJsonDocument doc = QJsonDocument::fromJson(val.toUtf8());
 ???QJsonObject objTop1 = doc.object();
 ???QStringList keys = objTop1.keys();
 ???//用户循环
 ???for(int i = 0; i < keys.count();i++)
 ???{
 ???????if(keys.at(i)!= userName)
 ???????????continue;
 ???????QJsonArray arrayRows = objTop1.value(keys.at(i)).toArray();
 ???????//行循环
 ???????for(int j =0;j < arrayRows.count();j++)
 ???????{
 ???????????QJsonObject objRow = arrayRows.at(j).toObject();
 ???????????if(objRow.keys().at(0) == rowId)
 ???????????{
 ???????????????return true;
 ???????????}
 ???????}
 ???}
 ???return false;
}
//添加收藏
void MainWindow::addJson(QString userName, QString rowId)
{
 ???if(!isInJson(userName,rowId))
 ???{
 ???????bool hasUser = false;
 ???????QString val;
 ???????QFile file;
 ???????file.setFileName("F:\\work\\qtProjects\\untitled11\\test123.json");
 ???????file.open(QIODevice::ReadOnly| QIODevice::Text);
 ???????val = file.readAll();
 ???????file.close();
 ???????QJsonDocument doc = QJsonDocument::fromJson(val.toUtf8());
 ???????QJsonObject objTop1 = doc.object();
 ???????QStringList keys = objTop1.keys();
 ???????//用户循环
 ???????for(int i = 0; i < keys.count();i++)
 ???????{
 ???????????if(keys.at(i) != userName)
 ???????????????continue;
 ???????????QJsonArray arrayRows = objTop1.value(keys.at(i)).toArray();
 ???????????QJsonObject addObj;
 ???????????QJsonObject addObj1;
 ???????????addObj1.insert("industryCode",rowId);
 ???????????addObj1.insert("industryName","454555");
 ???????????addObj.insert(rowId,addObj1);
 ???????????arrayRows.append(addObj);
 ???????????objTop1.insert(userName,arrayRows);
 ???????????hasUser = true;
 ???????????break;
 ???????}
 ???????//该用户还没有添加
 ???????if(!hasUser)
 ???????{
 ???????????QJsonArray arrayRows;
 ???????????QJsonObject addObj;
 ???????????QJsonObject addObj1;
 ???????????addObj1.insert("industryCode",rowId);
 ???????????addObj1.insert("industryName","444545");
 ???????????addObj.insert(rowId,addObj1);
 ???????????arrayRows.append(addObj);
 ???????????objTop1.insert(userName,arrayRows);
 ???????}
 ???????doc.setObject(objTop1);
 ???????file.setFileName("F:\\work\\qtProjects\\untitled11\\test123.json");
 ???????file.open(QIODevice::WriteOnly| QIODevice::Text);
 ???????file.write(doc.toJson());
 ???????file.close();
 ???}
}
//取消收藏
void MainWindow::removeJson(QString userName, QString rowId)
{
 ???if(isInJson(userName,rowId))
 ???{
 ???????QString val;
 ???????QFile file;
 ???????file.setFileName("F:\\work\\qtProjects\\untitled11\\test123.json");
 ???????file.open(QIODevice::ReadOnly| QIODevice::Text);
 ???????val = file.readAll();
 ???????file.close();
 ???????QJsonDocument doc = QJsonDocument::fromJson(val.toUtf8());
 ???????QJsonObject objTop1 = doc.object();
 ???????QStringList keys = objTop1.keys();
 ???????//用户循环
 ???????for(int i = 0; i < keys.count();i++)
 ???????{
 ???????????if(keys.at(i) != userName)
 ???????????????continue;
 ???????????QJsonArray arrayRows = objTop1.value(keys.at(i)).toArray();
 ???????????//行循环
 ???????????for(int j =0;j < arrayRows.count();j++)
 ???????????{
 ???????????????QJsonObject objRow = arrayRows.at(j).toObject();
 ???????????????if(objRow.keys().at(0) == rowId)
 ???????????????{
 ???????????????????arrayRows.removeAt(j);
 ???????????????????objTop1.insert(userName,arrayRows);
 ???????????????????break;
 ???????????????}
 ???????????}
 ???????????doc.setObject(objTop1);
 ???????????file.setFileName("F:\\work\\qtProjects\\untitled11\\test123.json");
 ???????????file.open(QIODevice::WriteOnly| QIODevice::Text);
 ???????????file.write(doc.toJson());
 ???????????file.close();
 ???????????break;
 ???????}
 ???}
}

qt json操作

原文地址:https://www.cnblogs.com/tianmochou/p/9264430.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved