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;
}
}
}
qt json操作的更多相关文章
- QT json数据的应用(cJSON)
json数据可保存小量的数据在本地的json文件中.QT有两种方式操作:(1).cJSON (2).QT的操作json数据的类. 应用:将监控预案数据保存在本地中. 1.首先根据预案结构创建一个jso ...
- Qt QAxObject操作excel文件过程总结(转):
正好同事问道Qt下操作excel. 转自:http://blog.csdn.net/a156392343/article/details/48092515 配制方面: 1.确保Excel软件在本地服务 ...
- Json操作(DynamicJson)
Json的简介 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了 ...
- ASP.NET 里的 JSON操作
最近项目中需要用到 JSON操作,google了一下 找到了几个比较好的操作方法.... 一 .使用 mircosoft 提供的 .NET Framework 自带的 json操作方法 1. 使用Ja ...
- 2.大约QT数据库操作,简单的数据库连接操作,增删改查数据库,QSqlTableModel和QTableView,事务性操作,大约QItemDelegate 代理
Linux下的qt安装,命令时:sudoapt-get install qt-sdk 安装mysql数据库,安装方法參考博客:http://blog.csdn.net/tototuzuoquan ...
- Qt之操作系统环境
来源:http://blog.sina.com.cn/s/blog_a6fb6cc90102uy9k.html Qt中操作系统环境,官方解释如下: QStringList QProcess::syst ...
- Newtonsoft.Json 操作 JSON 字符串
Newtonsoft.Json介绍 在做开发的时候,很多数据交换都是以json格式传输的.而使用Json的时候,我们很多时候会涉及到几个序列化对象的使用:DataContractJsonSeriali ...
- Asp.Net Core 2.0 项目实战(8)Core下缓存操作、序列化操作、JSON操作等Helper集合类
本文目录 1. 前沿 2.CacheHelper基于Microsoft.Extensions.Caching.Memory封装 3.XmlHelper快速操作xml文档 4.Serializatio ...
- JavaScript对json操作小记
JSON是一种轻量级的数据交换格式,同时,JSON是 JavaScript 原生格式,因此我们可以直接处理它不需要依赖任何工具包或者插件.因此,好多后台都会选择返回给前端这种非常友好的数据格式. 引子 ...
随机推荐
- php的if函数
条件语句用于基于不同条件执行不同的动作 PHP 条件语句 在您编写代码时,经常会希望为不同的决定执行不同的动作.您可以在代码中使用条件语句来实现这一点. 在 PHP 中,我们可以使用以下条件语句: i ...
- Vue CLi3入门
摘自:https://www.jianshu.com/p/cf9b56efd3b8 Vue CLi3入门 12018.11.15 14:16:17字数 1222阅读 8895 地址 Vue CLi3 ...
- CentOS 7,使用yum安装Nginx
https://www.centos.bz/2018/01/centos-7%EF%BC%8C%E4%BD%BF%E7%94%A8yum%E5%AE%89%E8%A3%85nginx/ 文章目录 [隐 ...
- ERROR:非静态成员引用必须与特定对象相对
非静态成员引用必须与特定对象相对 引用非静态成员前应该先声明该类的对象 typedef struct _SUPERRESOLUTIONPARAM { int Times; //重建倍数,指的是分别对长 ...
- failed to create cublas handle: CUBLAS_STATUS_ALLOC_FAILED 错误解决方法
解决: config = tf.ConfigProto() config.gpu_options.allow_growth = True session = tf.Session(config=con ...
- Jmeter测试工具的下载使用
Jmeter是一个非常好用的压力测试工具. Jmeter用来做轻量级的压力测试,非常合适,只需要十几分钟,就能把压力测试需要的脚本写好.
- 阶段3 3.SpringMVC·_01.SpringMVC概述及入门案例_04.入门程序之搭建开发环境
选择骨架构建 默认选中next-然后finish后就会去网上下载插件.会比较耗费时间. 添加一组键值对: archetypeCatalog internal 添加了这组坚持对,就可以解决Mavn项目创 ...
- Python学习笔记:MySQL数据库连接和使用
一.安装pymysql插件 直接在pycharm中安装即可. 二.使用 1.数据库插入操作 insert 注意: insert语句需要提交,使用commit() 如果报错,需要回滚.使用rollbac ...
- Function Expression
One of the key characteristics of function declarations is function declaration hoisting, whereby fu ...
- 在Spring容器外调用bean
这个东西源于这种需求:一个应用丢到服务其后,不管用户有没有访问项目,这个后台线程都必须给我跑,而且这个线程还调用了Spring注入的bean,这样自然就会想到去监听Servlet的状态,当Servle ...