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

【QT】-解析打包json

在 Qt 中,接收到 JSON 字符串后,可以通过 QJsonDocument 来解析 JSON 数据,获取字段值。同时,可以使用 QJsonDocument 将数据打包成 JSON 字符串,然后发送到 RabbitMQ 或其他地方。这个方法在 Qt 中非常常见且稳定。

解析 JSON 字符串:
首先,使用 QJsonDocument::fromJson 方法将 JSON 字符串解析为 QJsonDocument,然后使用 QJsonObject 或 QJsonArray 获取其中的字段。

打包发送 JSON 字符串:
可以使用 QJsonObject 和 QJsonDocument 将数据打包成 JSON 字符串,然后将其发送到 RabbitMQ。

以下是一个示例,包括如何接收 JSON 数据、解析字段以及如何打包数据并发送 JSON 字符串:

  1. 解析接收到的 JSON 字符串:
#include <QCoreApplication>
#include <QJsonDocument>
#include <QJsonObject>
#include <QDebug>

void parseJson(const QByteArray &jsonData) {
    // 将 JSON 字符串解析为 QJsonDocument
    QJsonDocument doc = QJsonDocument::fromJson(jsonData);
    
    // 检查是否解析成功
    if (!doc.isNull()) {
        // 如果 JSON 数据是一个对象,获取 QJsonObject
        if (doc.isObject()) {
            QJsonObject obj = doc.object();
            
            // 解析字段
            QString name = obj["name"].toString();
            int age = obj["age"].toInt();
            QString city = obj["city"].toString();
            
            // 输出解析的字段值
            qDebug() << "Name:" << name;
            qDebug() << "Age:" << age;
            qDebug() << "City:" << city;
        }
    } else {
        qDebug() << "Failed to parse JSON data!";
    }
}

int main(int argc, char *argv[]) {
    QCoreApplication a(argc, argv);

    // 模拟接收到的 JSON 字符串
    QByteArray jsonData = R"({"name": "John", "age": 30, "city": "New York"})";
    
    // 解析 JSON 字符串
    parseJson(jsonData);

    return a.exec();
}
2. 打包数据并发送为 JSON 字符串:
假设你有一些数据需要打包成 JSON 字符串并发送到 RabbitMQ。


#include <QCoreApplication>
#include <QJsonDocument>
#include <QJsonObject>
#include <QDebug>

QByteArray createJsonPacket() {
    // 创建 QJsonObject 对象
    QJsonObject obj;
    obj["name"] = "Alice";
    obj["age"] = 25;
    obj["city"] = "Los Angeles";
    
    // 将 QJsonObject 打包成 QJsonDocument
    QJsonDocument doc(obj);
    
    // 将 QJsonDocument 转换为 JSON 字符串 (QByteArray)
    QByteArray jsonData = doc.toJson();
    
    return jsonData;
}

int main(int argc, char *argv[]) {
    QCoreApplication a(argc, argv);
    
    // 创建一个 JSON 包
    QByteArray jsonPacket = createJsonPacket();
    
    // 输出打包后的 JSON 数据
    qDebug() << "JSON Packet to send:" << jsonPacket;
    
    // 此时,可以将 jsonPacket 发送到 RabbitMQ 或其他地方
    // (发送代码示例,视你所用的 RabbitMQ 库而定)
    
    return a.exec();
}

关键步骤总结:
解析接收到的 JSON 字符串:

使用 QJsonDocument::fromJson 将 JSON 字符串解析为 QJsonDocument 对象。
从 QJsonDocument 获取 QJsonObject 或 QJsonArray,然后访问字段。
打包数据成 JSON 字符串:

使用 QJsonObject 创建数据对象。
使用 QJsonDocument 将 QJsonObject 转换为 JSON 字符串,并可以通过 toJson() 获取 QByteArray。
发送 JSON 数据到 RabbitMQ:

使用 QAMQP 或其他类似的库连接到 RabbitMQ 并发送 JSON 数据。
建议的最佳实践:
结构化数据:使用 QJsonObject 和 QJsonArray 来保持 JSON 数据的结构清晰,避免复杂的字符串拼接。
错误处理:确保对 JSON 解析失败的情况进行错误处理。
性能考虑:如果处理非常大的 JSON 数据集,可以考虑优化内存管理,避免内存泄漏。
使用可靠的库:如 QAMQP 等库来简化与 RabbitMQ 的集成,确保通信的稳定性和可靠性。
这种方式在 Qt 中解析和生成 JSON 数据,结合 RabbitMQ 进行消息传递,是非常稳定和广泛使用的方法。

相关文章:

  • Java 8 + Tomcat 9.0.102 的稳定环境搭建方案,适用于生产环境
  • Linux centos 7 grub引导故障恢复
  • celery入门
  • 探讨Deveco Studio常见问题及解决方案,分享快速排障方法
  • Android Framework 之了解系统启动流程一
  • Shp文件转坐标并导出到Excel和JSON(arcMap + excel)
  • NCCL如何打印XML拓扑文件,操作说明和源码展示
  • VIC水文模型
  • 打靶练习-W1R3S、JARBAS、SickOS、Prime
  • 【每日学点HarmonyOS Next知识】tab对齐、相对布局、自定义弹窗全屏、动画集合、回到桌面
  • 【Unity网络同步框架 - Nakama研究(二)】
  • 基于NXP+FPGA永磁同步电机牵引控制单元(单板结构/机箱结构)
  • Simulink指导手册笔记②--快捷键及基本操作
  • C51 Proteus仿真实验17:数码管显示4×4键盘矩阵按键
  • CesiumforUE中Cesium3DTileset中高频使用的组件概述
  • 【最新】 ubuntu24安装 1panel 保姆级教程
  • Flutter PopScope对于iOS设置canPop为false无效问题
  • 网络安全信息收集[web子目录]:dirsearch子目录爆破全攻略以及爆破字典结合
  • 用python代码将excel中的数据批量写入Json中的某个字段,生成新的Json文件
  • 如何判断一个项目用的是哪个管理器
  • 国务院关税税则委员会公布公告调整对原产于美国的进口商品加征关税措施
  • 美凯龙:董事兼总经理车建兴被立案调查并留置
  • 中巡组在行动丨①震慑:这些地区有官员落马
  • 6连败后再战萨巴伦卡,郑钦文期待打出更稳定发挥
  • 女高音吴睿睿“古词新唱”,穿着汉服唱唐诗宋词
  • 湛江霞山通报渔船火灾:起火船舶共8艘,无人员伤亡或被困