Qt使用Json

news2025/3/10 20:39:10

包含目录:

#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.json
    QJsonDocument 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: 2
        QJsonValue 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=2
                	for(int j = 0 ; j < size;++j)
                    {
                        QJsonObject objData = value[j].toObject();
                       	int  id = objData .value("id").toInt();
                        ........
                    }
			}
            ......   
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java核心知识】ThreadLocal相关知识

ThreadLocal 什么是ThreadLocal ThreadLoacal类可以为每个线程保存一份独有的变量&#xff0c;该变量对于每个线程都是独占的。实现原理为每个Thread类中包含一个ThreadHashMap&#xff0c;key为变量的name&#xff0c;value为变量的值。 在日常使用中&#xff0c;我们可以通…

javaScipt

javaScipt 一、JavaScript简介二、javaScript基础1、输入输出语法2、变量3、常量4、数据类型4.1、数字型 number4.2、字符串类型 string4.3、布尔类型 boolean4.4、未定义类型 undefined4.5、null 空类型4.6、typeof 检测变量数据类型 5、数据类型转换5.1、隐式转换5.2、显示转…

电压跟随器

运算放大器&#xff0c;一般被硬件工程师用于处理模拟信号的理想器件&#xff0c;如微弱的电流信号以及微弱的电压信号&#xff0c;通过运算放大器的相应电路处理就能得到增强型的电流型号与电压信号&#xff1b;今天电路一点通就和小伙伴们一起学习总结下运放放大器常用的典型…

2023年单企业云盘最新产品榜单发布

企业云盘产品为企业提供了高效、安全、可靠的文件存储和共享服务&#xff0c;因此受到了众多企业用户的喜爱。本文参考各个产品测评网站&#xff0c;总结了几款备受好评的企业云盘产品&#xff0c;供您参考。 1, Zoho Workdrive 2, Google Drive 3, OneDrive 4, Dropbox 5…

vcruntime140_1.dll丢失的三个修复方法,【vcruntime140_1修复工具下载】

大家好&#xff01;今天&#xff0c;我将为大家介绍一个关于计算机vcruntime140_1.dll丢失的问题。在我们的日常生活和学习中&#xff0c;计算机出现问题是常有的事情。有时候&#xff0c;我们可能会遇到一些令人头疼的问题&#xff0c;比如vcruntime140_1.dll丢失。那么&#…

你知道用Woof创建的Linux吗?

Quirky 8.2 已发布&#xff0c;它是 Puppy Linux 的姊妹项目&#xff0c;是用一份叫 Woof 的定制工具创建的 Linux 发行。 新版本 Quirky 8.2 运行在 64 位的 x86 计算机上&#xff0c;主要提供了针对以前的 8.x 版本的增量改进。 Quirky Linux 8.2 x86_64 的代号是Xerus&…

【ROS 04】ROS运行管理

ROS是多进程(节点)的分布式框架&#xff0c;一个完整的ROS系统实现&#xff1a; 可能包含多台主机&#xff1b; 每台主机上又有多个工作空间(workspace)&#xff1b; 每个的工作空间中又包含多个功能包(package)&#xff1b; 每个功能包又包含多个节点(Node)&#xff0c;不同的…

全球免费编程教育网站:Code.org

全球免费编程教育网站&#xff1a;Code.org 官网地址注册使用 你还在为小朋友的编程教育而发愁吗&#xff1f; 你还在为小朋友放假无聊而头疼吗&#xff1f; 他来了他来了&#xff0c;全球免费编程教育网站来了。 2013年成立的Code.org是一个非营利组织。 它致力于为年轻女子、…

Linux学习之vsftpd虚拟用户

/etc/vsftpd/vsftpd.conf里边有几项跟vsftpd虚拟用户有关的主要配置&#xff1a; guest_enableYES&#xff0c;允许匿名用户登录vsftpd guest_usernamevirtual&#xff0c;指定虚拟用户账户为virtual&#xff0c;就是把虚拟用户映射成Linux本地用户&#xff0c;这样可以使用Lin…

(本文由AI辅助编写)想买保时捷敞篷跑车的看过来!

&#xff08;本文由AI辅助编写&#xff09;想买保时捷敞篷跑车的看过来&#xff01; 我算是后知后觉的&#xff0c;Chat6PT去年被人类发明后&#xff0c;我一直不看好他&#xff0c;可是怎奈周围人都在劝我体验一下&#xff0c;于是后来我借着ONLYOFFICE这个软件的Chat6PT功能…

Python学习之四 数据输入与输出

(一) 脚本编程 前面的章节,组要学习了一些简单的Python编程,使用的是交互式解释器,本章节将开始进行脚本编程。可以使用多种编辑器或者IDE完成编码,主要使用vim。 参考前续小节的写法,我们给a、b分别赋值3和5。 在终端运行程序后发现,没有任何输出。这就是本次我们将要…

Python入门教程 - 基本语法 (一)

目录 一、注释 二、Python的六种数据类型 三、字符串、数字 控制台输出练习 四、变量及基本运算 五、type()语句查看数据的类型 六、字符串的3种不同定义方式 七、数据类型之间的转换 八、标识符命名规则规范 九、算数运算符 十、赋值运算符 十一、字符串扩展 11.1…

2022年09月 C/C++(六级)真题解析#中国电子学会#全国青少年软件编程等级考试

C/C编程&#xff08;1~8级&#xff09;全部真题・点这里 第1题&#xff1a;stack or queue 栈和队列都是常用的线性结构&#xff0c;它们都提供两个操作&#xff1a; Push&#xff1a;加入一个元素。 Pop&#xff1a;弹出一个元素。 不同的是&#xff0c;栈是”先进后出”&…

Nmap 7.94 发布:新功能!

Nmap 的最新版本 7.94 在其 26 岁生日之际发布。 最重要的升级是在所有平台上将 Zenmap 和 Ndiff 从 Python 2 迁移到 Python 3。 这个新版本的 Nmap 7.94 进行了升级&#xff0c;进行了多项改进&#xff0c;修复了一些关键错误&#xff0c;并添加了新的 Npcap、操作系统指纹…

禅道项目管理系统 - 操作使用 (2023版)

1. 部门-用户-权限 新增部门 新增用户 设置权限 2. 项目集创建 项目集 - 添加项目集 3. 产品线创建 产品 - 产品线 4. 产品创建 产品 - 产品列表 - 添加产品 5. 产品计划创建 产品 - xx产品 - 计划 - 创建计划 我这里创建3个计划 (一期, 二期, 三期) 6. 研发需求 - 创建模块…

以antd为例 React+Typescript 引入第三方UI库

本文 我们来说说 第三方UI库 其实应用市场上的 第三方UI库都是非常优秀的 那么 react 我们比较熟的肯定还是 antd 我们还是来用它作为演示 这边 我们先访问他的官网 https://3x.ant.design/index-cn 点击开始使用 在左侧 有一个 在 TypeScript 中使用 通过图标我们也可以看出…

【目标检测】理论篇(3)YOLOv5实现

Yolov5网络构架实现 import torch import torch.nn as nnclass SiLU(nn.Module):staticmethoddef forward(x):return x * torch.sigmoid(x)def autopad(k, pNone):if p is None:p k // 2 if isinstance(k, int) else [x // 2 for x in k] return pclass Focus(nn.Module):def …

实战项目 在线学院之集成springsecurity的配置以及执行流程

一 后端操作配置 1.0 工程结构 1.1 在common下创建spring_security模块 1.2 pom文件中依赖的注入 1.3 在service_acl模块服务中引入spring-security权限认证模块 1.3.1 service_acl引入spring-security 1.3.2 在service_acl编写查询数据库信息 定义userDetailServiceImpl 查…

网站搭建最简化的引导操作 | 云服务器的购买选用 | 域名的选用 | 网站的上线和备案。

本文章面向对象为网站搭建的初次操作者&#xff0c;主要是一些自主使用的网站&#xff0c;为小白做为引导的教程。 一&#xff0c; 网站搭建的流程 1&#xff0c;服务器的租赁 2&#xff0c;购买域名 3&#xff0c;对域名进行备案 4&#xff0c;网站内部的搭建&#xff0c;上线…

读研对抗孤独感——快乐的意义在于和别人泛泛的交往

【对抗孤独需要肤浅朋友&#xff0c;不要什么精神之交】 评论区的精华总结几点&#xff1a; 1 降低道德感 2 降低交友门槛 3 交往的时候把别人看成自己的镜子就可以了 一些思考 其实 共鸣不是一开始就有的&#xff0c;而是似乎从一点点小的话题开始&#xff0c;每个人懂你心…