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

Qt5环境下Json数据按照设定顺序初始化修改和显示

1、JSon简介

JSON 是一种开放的数据交换格式,人与机器均可读取。JSON 与任何编程语言无关,是各种应用程序中常见的 API 输出。JSON 使用带有键值对的类似地图的结构,JSON 的语法更紧凑,更易于读写。JSON 支持数字、对象、字符串和布尔数组。

Json的基本语法如下表所示:

2、具体的实现代码如下:

#include <QCoreApplication> #include <QJsonObject> #include <QJsonValue> #include <QVariantMap> #include <QStringList> #include <QDebug> // 修改並按順序輸出 JSON QString orderedJsonSerialize(const QVariantMap &data, const QStringList &order) { QStringList jsonParts; foreach (const QString &key, order) { if (!data.contains(key)) continue; QString valueStr; QVariant val = data[key]; // 根據類型處理數值、字串等(此處僅處理基本類型,若有對象/數組需遞迴) if (val.type() == QVariant::String) { valueStr = QString("\"%1\": \"%2\"").arg(key, val.toString()); } else if (val.type() == QVariant::Int || val.type() == QVariant::Double) { valueStr = QString("\"%1\": %2").arg(key, val.toString()); } else if (val.type() == QVariant::Bool) { valueStr = QString("\"%1\": %2").arg(key, val.toBool() ? "true" : "false"); } else { valueStr = QString("\"%1\": null").arg(key); } jsonParts << valueStr; } return "{\n " + jsonParts.join(",\n ") + "\n}"; } int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); // 1. 存儲數據(使用 QVariantMap 方便修改) QVariantMap data; data["vd"] = "video_data"; data["ame"] = "my_name"; data["status"] = "active"; data["version"] = 5.12; // 2. 隨意修改數據 data["status"] = "modified"; data["version"] = 6.0; // 3. 定義輸出順序 QStringList order = {"vd", "ame", "status", "version"}; // 4. 按順序序列化 QString orderedJson = orderedJsonSerialize(data, order); qDebug().noquote() << "Ordered JSON Output:\n" << orderedJson; return 0; }

1)首先定义显示顺序:

//定義輸出順序 QStringList m_ListOrder = {"Operation_Type", "Bearing_Type", "Bearing_XC", "Bearing_XZDW","Bearing_XZNY",\ "Bearing_XZBH", "Bearing_DXDW", "Bearing_DXNY", "Bearing_DXBH","Bearing_YBJDW",\ "Bearing_YBJNY", "Bearing_YBJBH", "Bearing_SZRQ", "Bearing_NJ1","Bearing_NJ2",\ "SealSeat_NJ1", "SealSeat_NJ2", "TrackNo", "Size_Type","Serial_No"};

2)数据初始化

m_VariantMap["Operation_Type"] = "Add"; m_VariantMap["Bearing_Type"] = "352226X2-2RZ"; m_VariantMap["Bearing_XC"] = "新造"; m_VariantMap["Bearing_XZDW"] = "SKF";

3)修改需要修改的数据(键值对)

m_VariantMap["Bearing_Type"]=ui->comboBoxP1AxisType->currentText();

4)数据转换为字符串

QString strSearchInfo= orderedJsonSerialize(m_VariantMap, m_ListOrder);

转换为QString后可便于显示。

3、其它类介绍

QStringList是一个专门用于存储和处理字符串列表的类。它继承自QList<QString>,因此拥有QList的所有高效特性,并在此基础上增加了一些专门针对字符串处理的便捷功能。

QVariantMap并不是一个全新的类,而是QMap<QString, QVariant>的类型别名。它是一个非常强大的容器,专门用于存储键值对(Key-Value Pairs),其中键(Key)固定为字符串,而值(Value)可以是任何类型。核心作用是:JSON 数据转换,这是QVariantMap最常见的用途。Qt 的QJsonObject可以直接转换为QVariantMap(通过toVariantMap()),这使得在 C++ 中处理复杂的 JSON 数据变得像操作普通 Map 一样简单。

http://www.jsqmd.com/news/632960/

相关文章:

  • AI写教材全流程揭秘,低查重工具带你开启高效编写之旅!
  • Qwen3-0.6B-FP8保姆级部署指南:从零搭建你的AI对话机器人
  • C++高性能推理框架集成忍者像素绘卷:天界画坊模型实战
  • FastAPI异步优化实战:解决内存泄漏与虚拟内存激增问题
  • Intv_ai_mk11 低代码平台扩展:在Dify中集成自定义AI模型实战
  • lychee-rerank-mm在教育场景应用:题干-示意图自动匹配与教学资源排序
  • 国产信创库fio破坏主备库以及备份故障处理--惜分飞坎
  • 刚刚,奥特曼家被炸了!
  • android app广告拦截器基本成功
  • 一般的app开屏广告全都能拦截了
  • Qwen3-14B企业开发者案例:基于API服务构建内部智能办公平台
  • ComfyUI Manager完全指南:从零开始掌握AI绘画插件管理
  • Qwen3-8B新手入门:手把手教你用Ollama玩转大语言模型
  • Youtu-VL-4B-Instruct-GGUF技术解析:Agent智能体如何调用多模态模型
  • RMBG-2.0企业知识库建设:抠图操作SOP文档、FAQ知识图谱与智能客服接入
  • GLM-4.1V-9B-Base实操手册:基于Prometheus+Grafana的GPU服务监控看板
  • Qwen3.5-9B大模型技术解析:从原理到一键部署实践
  • S19文件格式详解:从Motorola历史到现代应用
  • DownKyi:当B站视频收藏遇到技术瓶颈,这款工具如何成为你的数字内容管家?
  • 其实我现在对于app广告拦截不是很在意-----因为国外app是绝对不允许出现摇一摇的
  • 软件组合管理中的树形结构处理
  • Rust的匹配中的@绑定模式与类型注解在模式匹配中的显式类型指定
  • ROS2 Nav2避障实战:用DWA算法让TurtleBot3在室内绕开障碍物(附Python代码)
  • GD32单片机ADC实战:从传感器到上位机,搞定50kg压力采集全流程(附源码/原理图)
  • FUTURE POLICE与Java集成开发:构建智能语音分析微服务
  • 2026年4月加固笔记本公司推荐,加固笔记本/全国产板卡/军用电脑/定制计算机/加固计算机,加固笔记本公司选哪家 - 品牌推荐师
  • Pixel Language Portal保姆级教程:从Docker拉取到16-bit HUD状态栏调试的完整流程
  • DAMOYOLO-S模型结构可视化与核心模块解读
  • Pi0具身智能v1开发实战:Python爬虫数据驱动机器人动作
  • CYBER-VISION零号协议Win11系统优化与定制指南