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();
相关推荐
阿俊-全栈开发8 分钟前
LikeShop 单商户SaaS商城分销模块二开:佣金计算与结算逻辑实现
java·开发语言·微服务·likeshop·likeshop开源商城·likeshop多商户
weixin_424183613 小时前
开放—封闭原则实战(下):基于策略的流程编排与编译期多态
c++·分布式·系统架构
wuminyu3 小时前
C++协程实现接收端的零拷贝Buffer管理原理剖析
java·linux·c语言·jvm·c++
小蒋学算法3 小时前
算法-交替删除操作后最后剩下的整数-跟着灵茶山艾府学算法
数据结构·算法
m0_380743873 小时前
C++中的freopen的用法实例详解
开发语言·c++
荆棘鸟智能4 小时前
林业遥感长势评估怎么做?从NDVI时序分析到LiDAR蓄积量回归
人工智能·算法·智慧林业
Escalating_xu4 小时前
【Python】基础语法(1):常量、变量、类型、输入输出与运算符
开发语言·python
zhangrelay4 小时前
ROS项目设计案例智能大模型正经乱答案例
linux·笔记·学习·ubuntu·机器人
probex_4 小时前
学习笔记:知识图谱是什么,在测试里能干什么
笔记·学习·知识图谱
jimy14 小时前
polymorph.cpp里面的“析构函数、智能指针”问题
开发语言·c++