Qt使用Json

包含目录:

#include <QJsonObject>
#include <QJsonDocument>
#include <QByteArray>
#include <QFile>
#include <QJsonArray>

基本结构:
在这里插入图片描述
写json

QJsonObject studentobj;QJsonArray arrarydata;QJsonObject subdata;int id = 01;QString name = "zhangsan";QString gender = "Male";subdata.insert("id", QJsonValue(id));subdata.insert("name", QJsonValue(name));subdata.insert("gender", QJsonValue(gender));arrarydata.append(QJsonValue(subdata));id = 02;name = "lisi";gender = "Male";subdata.insert("id", QJsonValue(id));subdata.insert("name", QJsonValue(name));subdata.insert("gender", QJsonValue(gender));arrarydata.append(QJsonValue(subdata));studentobj.insert("Student", QJsonValue(arrarydata));//写入到文件,名字为info.jsonQJsonDocument docs(studentobj);QByteArray datas = docs.toJson();QFile files("student.json");bool oks = files.open(QIODevice::WriteOnly);if (oks){files.write(datas);files.close();}else{qDebug() << "write error!" << endl;}

读json

QFile file("student.json");file.open(QIODevice::ReadOnly);QByteArray data = file.readAll();file.close();//解析QJsonParseError parseError;QJsonDocument doc = QJsonDocument::fromJson(data, &parseError);if (parseError.error != QJsonParseError::NoError) {qDebug() << "error";return;}QJsonObject obj = doc.object();if (obj.contains("Student")){QJsonValue arrayTemp = obj.value("Student");QJsonArray array = arrayTemp.toArray();qDebug() << "array size: " << array.size();// size: 2QJsonValue sub = array.at(0);//因为里面就一个元素,如果有多个元素,可以通过array.size()遍历QJsonObject subObj = sub.toObject();int  id = subObj.value("id").toInt();QString name = subObj.value("name").toString();QString gender = subObj.value("gender").toString();}

在这里插入图片描述

复合结构:

	QJsonArray ArrayALL;QJsonObject studentobj;QJsonArray studentarrarydata;QJsonObject studentsubdata;int id = 01;QString name = "zhangsan";QString gender = "Male";studentsubdata.insert("id", QJsonValue(id));studentsubdata.insert("name", QJsonValue(name));studentsubdata.insert("gender", QJsonValue(gender));studentarrarydata.append(QJsonValue(studentsubdata));id = 02;name = "lisi";gender = "Male";studentsubdata.insert("id", QJsonValue(id));studentsubdata.insert("name", QJsonValue(name));studentsubdata.insert("gender", QJsonValue(gender));studentarrarydata.append(QJsonValue(studentsubdata));studentobj.insert("Student", QJsonValue(studentarrarydata));QJsonObject scoreobj;QJsonArray scorearrarydata;QJsonObject scoresubdata;id = 01;double math = 95;double physics = 85;double english = 66;scoresubdata.insert("ID", id);scoresubdata.insert("Math", math);scoresubdata.insert("Physics", physics);scoresubdata.insert("English", english);scorearrarydata.append(scoresubdata);id = 02;math = 85;physics = 95;english = 86;scoresubdata.insert("ID", id);scoresubdata.insert("Math", math);scoresubdata.insert("Physics", physics);scoresubdata.insert("English", english);scorearrarydata.append(scoresubdata);scoreobj.insert("Score", scorearrarydata);ArrayALL.append(studentobj);ArrayALL.append(scoreobj);QJsonDocument jsonDoc;jsonDoc.setArray(ArrayALL);QByteArray json = jsonDoc.toJson();//写文件QFile file0("test.json");file0.open(QIODevice::WriteOnly);file0.write(json);file0.close();

在这里插入图片描述
读文件

QFile file("info.json");
file.open(QIODevice::ReadOnly);
QByteArray data = file.readAll();
file.close();
//解析
QJsonParseError parseError;
QJsonDocument document= QJsonDocument::fromJson(data, &parseError);
if (parseError.error != QJsonParseError::NoError) {qDebug() << "error";return;
}
if(document.isArray())
{int Num = document.array().size();for(int i = 0; i <  Num ; ++i){QJsonObject obj = document[i].toObject();QJsonValue value = obj.value("Student");int size = value.toArray().size();  //size=2for(int j = 0 ; j < size;++j){QJsonObject objData = value[j].toObject();int  id = objData .value("id").toInt();........}}......   
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/94206.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSS中如何实现元素的渐变背景(Gradient Background)效果?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ CSS 渐变背景效果⭐ 线性渐变背景⭐ 径向渐变背景⭐ 添加到元素的样式⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&…

小苹果他爹V5.8版本最强小苹果影视盒子增加46条内置优质单仓线路

这款软件直接使用了俊版的小苹果接口&#xff0c;并且许多资源似乎都是直接调用的小苹果官方资源。这样一来&#xff0c;小苹果的作者可能会面临版权方面的问题&#xff0c;而且也让更多的用户对小苹果的收费模式产生质疑。在这个信息传播如此快速的时代&#xff0c;开发者们应…

Rabbitmq消息积压问题如何解决以及如何进行限流

一、增加处理能力 优化系统架构、增加服务器资源、采用负载均衡等手段&#xff0c;以提高系统的处理能力和并发处理能力。通过增加服务器数量或者优化代码&#xff0c;确保系统能够及时处理所有的消息。 二、异步处理 将消息的处理过程设计为异步执行&#xff0c;即接收到消息…

老胡的周刊(第106期)

老胡的信息周刊[1]&#xff0c;记录这周我看到的有价值的信息&#xff0c;主要针对计算机领域&#xff0c;内容主题极大程度被我个人喜好主导。这个项目核心目的在于记录让自己有印象的信息做一个留存以及共享。 &#x1f3af; 项目 quivr[2] Quivr 是您在云中的第二个大脑&…

CSS判断手机暗黑模式

手机有个功能到了晚上会自动变成深色也就是暗黑模式.这种情况下网页会自动变颜色.如果想自由控制暗黑模式下的html样式的话,可以用如下方式: media (prefers-color-scheme: dark) {/*html, body {*//*filter: invert(1) hue-rotate(180deg);*//*}*/.maill{margin-left: 0;marg…

blender界面认识01

学习视频 【基础篇】1.2 让手听话_哔哩哔哩_bilibili 目录 控制视角 控制物体 选择对象1 小结 控制视角 长按鼠标中键-----视角旋转 shift鼠标中键-----视角平移 滚动鼠标中键-----视角缩放 也可以通过界面的快捷工具实现 这个视角旋转有一点像catia中罗盘&#xff0c…

改革企业治理结构,建立国有企业全面预算管理制度

随着我国市场经济的推广&#xff0c;国有企业进入到改革发展的必经之路上&#xff0c;企业应当结合自身实际情况加强成本管控&#xff0c;提高管理效率&#xff0c;为企业的发展提供有力保障。近年来&#xff0c;全面预算管理的理念在国有企业实施范围内不断扩大&#xff0c;加…

React笔记(二)JSX

一、JSX JSX是javascript XML的简写&#xff0c;实际上是javascript的扩展&#xff0c;既有javascript的语法结构&#xff0c;又有XML的结构 1、JSX的规则要求 jsx必须要有一个根节点 如果不想产生无用的根标签&#xff0c;但是还要遵守JSX的语法的要求&#xff0c;可以使用…

DVWA XSS

反射型 low 查看源代码&#xff0c;没有任何过滤 构造 medium 这里是过滤了 high 这里把双写和大小写和JavaScript都过滤了,用事件来绕过<img src0 οnerrοralert(“xss”)> impossible 这里使用htmlspecialchars进行实体转换并且输出的结果还不能使用事件来…

Jmeter+ServerAgent

一、Jmeter 下载 https://jmeter.apache.org/download_jmeter.cgi选择Binaries二进制下载 apache-jmeter-5.6.2.tgz 修改配置文件 jmeter下的bin目录&#xff0c;打开jmeter.properties 文件 languagezh_CN启动命令 cd apache-jmeter-5.6/bin sh jmeter二、ServerAgent 监…

Mac软件删除方法?如何删除不会有残留

Mac电脑如果有太多无用的应用程序&#xff0c;很有可能会拖垮Mac系统的运行速度。因此&#xff0c;卸载电脑中无用的软件是优化Mac系统运行速度的最佳方式之一。Mac卸载应用程序的方式是和Windows有很大的区别&#xff0c;特别对于Mac新用户来说&#xff0c;如何无残留的卸载删…

SpringBoot完整项目部署流程(软件安装-前后端部署)

SpringBoot完整项目部署流程 安装Jdk 使用XTFP工具将jdk的二进制发布包上传到Linux 解压安装包 tar -zxvf jdk-8u171-linux-x64.tar.gz -C /usr/local解压完毕 配置环境变量&#xff0c;使用vim命令修改 /etc/profile文件&#xff0c;在文件末尾加入如下配置 JAVA_HOME/usr…