当前位置: 首页 > news >正文

QT 中如何使用 JSON 功能?

在 Qt 中,您可以使用 QJsonDocumentQJsonObjectQJsonArray 类来处理 JSON 数据。以下是一个简单的示例,说明如何在 Qt 中使用这些类来解析和生成 JSON 数据:

1. 包含必要的头文件

首先,确保您的项目中包含了必要的 Qt JSON 模块的头文件。

#include <QJsonDocument>  
#include <QJsonObject>  
#include <QJsonArray>

2. 解析 JSON 数据

如果您有一个 JSON 字符串,您可以使用 QJsonDocument 来解析它。

QString jsonString = R"({"name": "John", "age": 30})";  
QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonString.toUtf8());  
if (!jsonDoc.isNull()) {  // 检查 JSON 是否有效  QJsonObject jsonObj = jsonDoc.object();  QString name = jsonObj["name"].toString();  int age = jsonObj["age"].toInt();  // 使用解析后的数据  
} else {  // 处理解析错误  
}

3. 创建 JSON 数据

您也可以使用 QJsonObjectQJsonArray 来创建 JSON 数据。

// 创建一个 JSON 对象  
QJsonObject jsonObj;  
jsonObj["name"] = "John";  
jsonObj["age"] = 30;  // 创建一个 JSON 数组  
QJsonArray jsonArray;  
jsonArray << "item1" << "item2" << "item3";  // 将对象和数组组合成一个 JSON 文档  
QJsonDocument jsonDoc(jsonObj); // 或者 jsonDoc(jsonArray);

4. 将 JSON 数据转换为字符串(序列化)

如果您想将 QJsonDocument 转换为字符串,可以使用 toJson 方法。

QString jsonString = jsonDoc.toJson(QJsonDocument::Indented); // 可选参数指

定格式化输出或紧凑输出

5. 将字符串解析为 JSON 数据(反序列化)

与解析 JSON 数据类似,您可以使用 QJsonDocument::fromJson 方法将字符串解析为 QJsonDocument。然后,您可以提取其中的对象或数组。

注意事项:
在处理 JSON 数据时,请确保检查错误,例如在解析无效的 JSON 时。
Qt 的 JSON 类不支持所有 JSON 功能,比如日期和二进制数据类型。对于这些功能,您可能需要使用其他库或手动处理。

http://www.lryc.cn/news/289714.html

相关文章:

  • C++面试:算法的执行效率和资源消耗、时间和空间复杂度分析根据实际场景,选用合适的数据结构和算法进行程序设计
  • 力扣100215-按键变更的次数
  • STM32-GPIO输出(HAL库)
  • 倒计时80天
  • PBM模型参数详解
  • 贪吃蛇/链表实现(C/C++)
  • Qlik Sense : IntervalMatch(离散匹配)
  • MySql45讲-08.事务到底是隔离的还是不隔离的?(结合MVCC视频)
  • 备战蓝桥杯----数据结构及STL应用(基础2)
  • 日常学习之:vue + django + docker + heroku 对后端项目 / 前后端整体项目进行部署
  • LangGraph:一个基于LangChain构建的AI库,用于创建具有状态、多参与者的应用程序
  • 04-Nacos-服务注册基于spring boot实现
  • iOS 闭包和Block的区别
  • 后端学习笔记——后端细碎知识点(每天更新......)
  • 二进制中1的个数
  • python+matlab text(按图的相对位置显示)
  • rust 引用/mut 的所有权
  • 油烟净化器科技改革,清新用餐生活
  • [足式机器人]Part3 机构运动学与动力学分析与建模 Ch01-1 刚体系统的运动学约束
  • 51单片机智能小车
  • 9. 嵌入式系统开发:安全性与可靠性设计模式---引言
  • 内网安全:Exchange服务
  • Flask介绍和优势
  • 喜报|「云原生数据库PolarDB」、「阿里云瑶池一站式数据管理平台」揽获“2023技术卓越奖”
  • 【动态规划】【字符串】【行程码】1531. 压缩字符串
  • 检测头篇 | 原创自研 | YOLOv8 更换 SEResNeXtBottleneck 头 | 附详细结构图
  • PHP语法
  • MySQL:三大日志(binlog、redolog、undolog)
  • 【QT+QGIS跨平台编译】之十二:【libpng+Qt跨平台编译】(一套代码、一套框架,跨平台编译)
  • Windows 和 Anolis 通过 Docker 安装 Milvus 2.3.4