7. JSON

JSON 数据封装
JSON 与三个核心类

JSON(JavaScript Object Notation)是一种标准的数据交互格式,常用于两个系统/模块之间通信,也可作为软件本地的配置文件。Qt 提供三个核心类:QJsonObject(JSON 对象,键值对集合)、QJsonArray(JSON 数组)、QJsonDocument(JSON 文档,负责对象/数组与字节流之间的转换)。

封装流程:QJsonObject 装数据 → QJsonDocument doc(obj) 包一层 → doc.toJson() 转 QByteArray 发送。

解析流程:QJsonDocument::fromJson(收到的字节) → .object() 还原对象 → obj"键".toString() 取值。

取值要按类型转换:obj"name".toString()(字符串)、obj"age".toInt()(整数)。

QJsonArray 用 append() 加元素,遍历时每个元素用 toInt()/toString() 转类型。

复制代码
 #include <QJsonObject>
 #include <QJsonDocument>
 #include <QJsonArray>
 ​
 // —— 发送方:封装 ——
 QJsonObject obj;
 obj.insert("name", "yangyang");   // 键值对
 obj.insert("pwd", "666");
 QJsonDocument doc(obj);           // 对象包进文档
 QByteArray wdata = doc.toJson();  // 转字节流,可发送
 // cli->write(wdata);             // 网络发送
 ​
 // —— 接收方:解析 ——
 QJsonDocument mydoc = QJsonDocument::fromJson(wdata);  // 字节流还原
 QJsonObject robj = mydoc.object();                     // 取对象
 qDebug() << robj["name"].toString()    // 按类型取值
          << robj["pwd"].toString();
 ​
 // —— 数组 ——
 QJsonArray arr;
 arr.append(11);          // 加元素
 arr.append(12);
 QJsonDocument d2(arr);   // 数组也可包进文档
 QByteArray b2 = d2.toJson();
 // 解析后遍历
 QJsonArray myarr = QJsonDocument::fromJson(b2).array();
 for (auto i : myarr)
     qDebug() << i.toInt();
相关推荐
djarmy4 小时前
MAIN.c(1): warning C318: can’t open file ‘STC8G.H’ 报错 解决 分析
c语言·开发语言·mongodb
HEJOO95 小时前
深入理解 Java volatile 关键字:原理、用法与常见误区
java·开发语言·spring
曹牧5 小时前
Java:no content to map due to end of input
java·开发语言
梦梦代码精5 小时前
《回收租赁系统技术选型避坑指南:业务闭环与二开自由度详解》
开发语言·低代码·docker·开源·代码规范
隔窗听雨眠5 小时前
记一次SQL Server数据库性能分析:从CPU100%到单配置修复的完整诊断
开发语言·数据库·php
David猪大卫5 小时前
【C++修炼】智能指针使用及原理
开发语言·c++·经验分享·笔记·学习·考研·面试
charlie1145141915 小时前
现代Qt开发之图像处理进阶:像素操作与格式转换
开发语言·图像处理·qt
李永奉5 小时前
中科蓝讯SDK开发-BT893x 面条耳机连接vivo手机后连接APP端,最后手机端设置页面手动断开蓝牙连接,此时耳机端假断开
c语言·开发语言·嵌入式硬件·物联网·智能手机·电脑
2601_967760786 小时前
2026年PDF压缩与页码添加工具技术实测:性能、算法与本地化适配深度对比
算法·pdf
零衣贰6 小时前
The 2026 ICPC Asia East Continent Online Contest (I) 题解
c++·icpc