qt-C++笔记之json文件内容操作完整例程

qt-C++笔记之json文件内容操作完整例程

code review!

文章目录

  • qt-C++笔记之json文件内容操作完整例程
    • 1.运行输出
    • 2.运行后的test.json文件内容
    • 3.main.cpp

1.运行输出

读取到的 JSON 对象: {"Array": ["Item1","Item2"],"Name": "Example","Value": 42
}修改后的 JSON 对象: {"Array": ["Item1","Item2","Item3"],"Modified": true,"Name": "Modified Example","Value": 42
}

2.运行后的test.json文件内容

{"Array": ["Item1","Item2","Item3"],"Modified": true,"Name": "Modified Example","Value": 42
}

3.main.cpp

#include <QCoreApplication>
#include <QJsonObject>
#include <QJsonDocument>
#include <QJsonArray>
#include <QFile>
#include <QIODevice>
#include <QDebug>// 函数:从文件读取 JSON 对象
QJsonObject readJsonFromFile(const QString &filePath) {QFile file(filePath);if (!file.open(QIODevice::ReadOnly)) {qWarning() << "无法打开文件进行读取:" << filePath;return QJsonObject();}QByteArray jsonData = file.readAll();file.close();QJsonDocument doc = QJsonDocument::fromJson(jsonData);if (doc.isNull()) {qWarning() << "解析 JSON 失败。";return QJsonObject();}return doc.object();
}// 函数:将 JSON 对象写入文件
void writeJsonToFile(const QString &filePath, const QJsonObject &jsonObject) {QJsonDocument doc(jsonObject);QFile file(filePath);if (!file.open(QIODevice::WriteOnly)) {qWarning() << "无法打开文件进行写入:" << filePath;return;}file.write(doc.toJson());file.close();
}int main(int argc, char *argv[]) {QCoreApplication a(argc, argv);QString filePath = "test.json";// 创建并写入初始 JSON 对象QJsonObject initialObj;initialObj["Name"] = "Example";initialObj["Value"] = 42;QJsonArray array;array.append("Item1");array.append("Item2");initialObj["Array"] = array;// 将初始 JSON 对象写入文件writeJsonToFile(filePath, initialObj);// 从文件读取 JSON 对象QJsonObject readObj = readJsonFromFile(filePath);// 打印读取到的 JSON 对象qDebug().noquote() << "读取到的 JSON 对象:" << QJsonDocument(readObj).toJson(QJsonDocument::Indented);// 修改读取到的 JSON 对象readObj["Modified"] = true;readObj["Name"] = "Modified Example";QJsonArray newArray = readObj["Array"].toArray();newArray.append("Item3");readObj["Array"] = newArray;// 将修改后的 JSON 对象再次写入文件writeJsonToFile(filePath, readObj);// 再次从文件读取修改后的 JSON 对象QJsonObject modifiedReadObj = readJsonFromFile(filePath);// 打印修改后的 JSON 对象qDebug().noquote() << "修改后的 JSON 对象:" << QJsonDocument(modifiedReadObj).toJson(QJsonDocument::Indented);return a.exec();
}

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

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

相关文章

掌握Xcode后台处理的艺术:iOS应用的隐形力量

掌握Xcode后台处理的艺术&#xff1a;iOS应用的隐形力量 在iOS应用开发中&#xff0c;后台处理能力是提升用户体验的关键因素之一。无论是在后台下载数据、播放音乐&#xff0c;还是在后台完成长时间运行的任务&#xff0c;Xcode都提供了强大的工具和API来支持这些操作。本文将…

jvm-证明cpu指令是乱序执行的案例

package jvm;/*** 证明cpu指令是乱序执行的** author 1* version 1.0* description: TODO* date 2024-07-19 9:31*/ public class T04_Disorder {private static int x 0, y 0;private static int a 0, b 0;public static void main(String[] args) throws InterruptedExcep…

B树:高效的数据存储结构

在计算机科学中&#xff0c;B树&#xff08;B-Tree&#xff09;是一种平衡多路查找树&#xff0c;它广泛应用于数据库和文件系统等需要高效数据存储和检索的场景。B树的设计旨在优化磁盘I/O操作&#xff0c;通过减少磁盘访问次数来提高数据检索的效率。本文将介绍B树的基本概念…

配置web服务器

当访问网站www.haha.com时显示&#xff1a;haha&#xff1b;当访问网站www.xixi.com/secret/显示&#xff1a;this is secret 第一步&#xff0c;配置一个新的IP 确认后 esc返回 第二步&#xff1a;重启ens160 第三步&#xff1a;创建目录&#xff0c;并且在文件内写入内容 第…

Python中with 关键字、tell() 和 seek() 方法

在 Python 编程中&#xff0c;文件操作是常见的任务之一。无论是读取数据还是写入数据&#xff0c;都需要对文件进行适当的管理和操作。本文将介绍如何使用 with 关键字来简化文件操作&#xff0c;并结合 tell() 和 seek() 方法实现灵活的文件指针控制。 with 关键字&#xff…

【b站/哔哩哔哩/bilibili】视频缓冲慢的解决方法

最近我的b站视频缓冲很慢&#xff0c;加载速度只有100多kb/s。这导致视频加载非常慢&#xff0c;看几秒就卡很久&#xff0c;有时候甚至黑屏。 据某些b站网友研究&#xff0c;b站存在如下问题&#xff1a;相关动态 “2.更改网络协议。是的&#xff0c;你没看错&#xff0c;转了…

RabbitMQ是什么?

RabbitMQ是一个开源的消息代理软件&#xff08;Message Broker&#xff09;&#xff0c;它实现了高级消息队列协议&#xff08;AMQP&#xff0c;Advanced Message Queuing Protocol&#xff09;&#xff0c;并支持多种消息传递协议。它最初由英国的Rabbit Technologies开发&…

力扣题解(盈利计划)

879. 盈利计划 集团里有 n 名员工&#xff0c;他们可以完成各种各样的工作创造利润。 第 i 种工作会产生 profit[i] 的利润&#xff0c;它要求 group[i] 名成员共同参与。如果成员参与了其中一项工作&#xff0c;就不能参与另一项工作。 工作的任何至少产生 minProfit 利润的…

Unity UGUI 之 Toggle

​本文仅作学习笔记与交流&#xff0c;不作任何商业用途本文包括但不限于unity官方手册&#xff0c;唐老狮&#xff0c;麦扣教程知识&#xff0c;引用会标记&#xff0c;如有不足还请斧正​ 1.什么是Toggle&#xff1f; Unity - Manual: Toggle 带复选框的开关&#xff0c;可…

等保测评的未来展望:智能化、自动化与合规性的深度融合

随着信息技术的飞速发展&#xff0c;网络安全威胁日益复杂多变&#xff0c;保障信息系统安全成为各行各业不可忽视的重要任务。等级保护&#xff08;简称“等保”&#xff09;作为国家信息安全保障的基本制度&#xff0c;对于提升我国关键信息基础设施的安全防护能力具有重要意…

【Unity】Android Failed to transform Error while dexing.

文章目录 一、背景二、问题描述三、原因和解决方法 一、背景 1、Unity 2021.3.33f1 2、Firebase 11.7.0 3、升级至API-34 二、问题描述 错误信息 Failed to transform play-services-measurement-api-21.5.0.aar (com.google.android.gms:play-services-measurement-api:21.5.…

算法力扣刷题记录 五十六【501.二叉搜索树中的众数】

前言 二叉搜索树操作&#xff0c;继续。 记录 五十六【501.二叉搜索树中的众数】 一、题目阅读 给你一个含重复值的二叉搜索树&#xff08;BST&#xff09;的根节点 root &#xff0c;找出并返回 BST 中的所有 众数&#xff08;即&#xff0c;出现频率最高的元素&#xff09;…

【Socket编程】基于TCP协议实现客户端与服务端的通信

前言 由于TCP是面向连接的&#xff0c;所以在创建套接字之后还需要进入监听状态&#xff0c;监听状态下可以获取客户端的请求。获得请求之后&#xff0c;服务器需要接受连接&#xff0c;之后再处理事务。 实现服务端具体步骤 总的来说&#xff0c;TCP服务端主要实现以下步骤…

达梦数据库的系统视图v$dmwatcher

达梦数据库的系统视图v$dmwatcher 查询当前登录实例所对应的守护进程信息&#xff0c;注意一个守护进程可以同时守护多个组的实例&#xff0c;因此查询结果中部分字段&#xff08;N_GROUP、SWITCH_COUNT&#xff09;为守护进程的全局信息&#xff0c;并不是当前登录实例自身的…

0401-403组合逻辑电路的分析设计竞争冒险

组合逻辑电路的分析设计&竞争冒险 4.组合逻辑电路1.目录2.教学基本要求3.序 关于组合逻辑电路 4.1组合逻辑电路分析与设计一、组合逻辑电路分析二、组合逻辑电路的分析步骤&#xff1a;三、组合逻辑电路的分析举例例1 奇校验电路例2.对输入的二进制求反码例3.一个工厂发电的…

CSS 的环境变量函数env()

在CSS中&#xff0c;env() 函数并不是传统意义上的“环境变量”函数&#xff0c;如你在编程语言中可能遇到的那样。相反&#xff0c;env() 是CSS中的一个函数&#xff0c;它用于访问由宿主环境&#xff08;如浏览器&#xff09;提供给CSS的自定义属性&#xff08;也称为环境变量…

使用 PVE 自签 CA 证书签发新证书

前言 PVE 安装时会自动创建一个有效期 10 年的 CA 证书, 我们可以利用这个 CA 证书给虚拟机中的 Web 应用签发新的 TLS 证书用于提供 HTTPS 服务. 下面以 PVE 虚拟机中通过 Docker 跑的一个 雷池 应用为例进行演示. PVE 证书位置 官方文档: https://pve.proxmox.com/wiki/Pr…

服务攻防-框架安全(漏洞复现)

关闭靶场 sudo docker-compose down 运行此靶场 sudo docker-compose up -d 查看启动环境 sudo docker ps 运行dockers容器 docker exec -it 64052abd288b /bin/bash thinkphp框架 thinkphp 2 - rce漏洞复现 docker exec -it 731dbae0e0b5 /bin/bash 集成化工具扫描 可以命令…

Qt区分鼠标按下时移动的是哪个多边形

使用不同的鼠标事件处理器&#xff1a;为每个多边形分配不同的事件处理器&#xff0c;或者在同一个处理器中使用逻辑来区分。 检查鼠标点击位置&#xff1a;在鼠标按下事件中&#xff0c;检查鼠标的位置是否在某个多边形的边上或顶点上。 使用图形的标识符&#xff1a;给每个…

十五届蓝桥杯JAVA B组题目详解(持续更新中)

试题 B: 类斐波那契循环数 我发现蓝桥杯的题目现在就是要费时间去理解&#xff0c;所以还是审题很重要&#xff0c;这道题的思路就是&#xff0c;一个n位数的前n个数&#xff0c;都是对应的位数上的值&#xff0c;比如说12345&#xff0c;五位数是吧&#xff0c;那数列S的前五位…