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();
相关推荐
职豚求职小程序2 小时前
易方达基金27秋招笔试|场次+考情全梳理
笔记
阿里嘎多学长8 小时前
2026-10-20 GitHub 热点项目精选
开发语言·程序员·github·代码托管
布吉岛的石头9 小时前
Java 程序员第 50 阶段2:预训练的目标函数:自回归语言建模本质
java·开发语言·人工智能·深度学习·回归·transformer
小羊没烦恼!9 小时前
铁道部新客票系统设计(二)
开发语言·前端·数据库·python·oracle·c#·php
quantdash_cc10 小时前
从实时行情到价格观察表:用 Python 和 Pandas 构建策略输入数据
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
镜子AI10 小时前
镜子AI工程实践:用 Python 做 GEO 实体一致性审计,并自动生成 JSON-LD 结构化数据
人工智能·python·json
昂好的day11 小时前
VisionMaster 通信模块实战(上):Modbus、TCP 收发、协议组装解析
开发语言·网络·网络协议·tcp/ip·c#
罗湖老棍子11 小时前
【例 1】Sightseeing Trip(信息学奥赛一本通- P1494)(洛谷-P10927)
数据结构·算法·图论·最短路·floyd·最小环
努力实干11 小时前
面向对象设计原则——C++
开发语言·c++·数码相机
NetX行者13 小时前
四语言 Hello World 背后:编译模型与运行时对比
开发语言