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操作的更多相关文章

  1. QT json数据的应用(cJSON)

    json数据可保存小量的数据在本地的json文件中.QT有两种方式操作:(1).cJSON (2).QT的操作json数据的类. 应用:将监控预案数据保存在本地中. 1.首先根据预案结构创建一个jso ...

  2. Qt QAxObject操作excel文件过程总结(转):

    正好同事问道Qt下操作excel. 转自:http://blog.csdn.net/a156392343/article/details/48092515 配制方面: 1.确保Excel软件在本地服务 ...

  3. Json操作(DynamicJson)

    Json的简介 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了 ...

  4. ASP.NET 里的 JSON操作

    最近项目中需要用到 JSON操作,google了一下 找到了几个比较好的操作方法.... 一 .使用 mircosoft 提供的 .NET Framework 自带的 json操作方法 1. 使用Ja ...

  5. 2.大约QT数据库操作,简单的数据库连接操作,增删改查数据库,QSqlTableModel和QTableView,事务性操作,大约QItemDelegate 代理

     Linux下的qt安装,命令时:sudoapt-get install qt-sdk 安装mysql数据库,安装方法參考博客:http://blog.csdn.net/tototuzuoquan ...

  6. Qt之操作系统环境

    来源:http://blog.sina.com.cn/s/blog_a6fb6cc90102uy9k.html Qt中操作系统环境,官方解释如下: QStringList QProcess::syst ...

  7. Newtonsoft.Json 操作 JSON 字符串

    Newtonsoft.Json介绍 在做开发的时候,很多数据交换都是以json格式传输的.而使用Json的时候,我们很多时候会涉及到几个序列化对象的使用:DataContractJsonSeriali ...

  8. Asp.Net Core 2.0 项目实战(8)Core下缓存操作、序列化操作、JSON操作等Helper集合类

    本文目录 1.  前沿 2.CacheHelper基于Microsoft.Extensions.Caching.Memory封装 3.XmlHelper快速操作xml文档 4.Serializatio ...

  9. JavaScript对json操作小记

    JSON是一种轻量级的数据交换格式,同时,JSON是 JavaScript 原生格式,因此我们可以直接处理它不需要依赖任何工具包或者插件.因此,好多后台都会选择返回给前端这种非常友好的数据格式. 引子 ...

随机推荐

  1. JavaWeb-SpringBoot_使用H2数据库实现用户注册登录

    使用Gradle编译项目 传送门 前端资源同:使用MySQL数据库实现用户管理_demo 传送门 H2:SpringBoot内置持久化数据库  使用H2数据库实现用户注册登录 用户可以在index.h ...

  2. task.delay 和 thread.sleep

    1.Thread.Sleep 是同步延迟. Task.Delay异步延迟. 2.Thread.Sleep 会阻塞线程,Task.Delay不会. 3.Thread.Sleep不能取消,Task.Del ...

  3. C++入门经典-例6.6-字符串复制

    1:字符串复制函数strcpy的格式如下: strcpy(字符数组名,字符串) 其作用是把字符串中的字符串复制到字符数组中.需要注意的是,字符串结束标志'\0'也一同被复制. 注意是将后面的内容复制给 ...

  4. 一、MongoDB为用户设置访问权限

    MongoDB默认设置为无权限访问限制 注:基于Windows平台 MongoDB在本机安装部署好后 1. 输入命令:show dbs,你会发现它内置有两个数据库,一个名为admin,一个名为loca ...

  5. XMLHttpRequest 对象属性参数参考

    readyState:提供当前 HTML 的就绪状态. readyState可能返回的值: 0:请求未初始化(还没有调用 open()). 1:请求已经建立,但是还没有发送(还没有调用 send()) ...

  6. CentOS 7下载

    CentOS 7官方下载地址:https://www.centos.org/download/ 转载https://blog.csdn.net/yxwmzouzou/article/details/7 ...

  7. 如何消除 com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server

    在application.properties中添加以下两句话: eureka.client.register-with-eureka=falseeureka.client.fetch-registr ...

  8. DFA算法以及ios中OC实现DFA

    DFA不同于苹果手机的idfa DFA全称为:Deterministic Finite Automaton,即确定有穷自动机.其特征为:有一个有限状态集合和一些从一个状态通向另一个状态的边,每条边上标 ...

  9. 【Python】格式化输出json

    参考文档: Python JSON JSON 函数 使用 JSON 函数需要导入 json 库:import json. 函数 描述 json.dumps  将 Python 对象编码成 JSON 字 ...

  10. nginx不记录指定文件类型日志

    1.指定记录文件日志记录的内容. vim /usr/local/nginx/conf/nginx.conf如下部分: log_format dd '$remote_addr $http_x_forwa ...