zoukankan      html  css  js  c++  java
  • qt json操作

    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;
            }
    
    
        }
    }
  • 相关阅读:
    [整理]Cadence 生成带有网络追踪的 PDF 原理图
    [整理]FSM 有限状态机
    [原创]Quartus 中调用 Modelsim 波形仿真
    [原创]SPI 协议介绍以及基于 Verilog 的 IP 核实现
    [原创]Verilog 代码编程规范(个人用)
    [算法]线段树
    [算法]tarjan
    poj3280
    poj 3258 River Hopscotch
    [poj 1251]Jungle Roads
  • 原文地址:https://www.cnblogs.com/tianmochou/p/9264430.html
Copyright © 2011-2022 走看看