【QT 读取JSON】 深入浅出 使用QT内置的QJson模块解析Json文件 匠心之作

您所在的位置:网站首页 文件括号类型 【QT 读取JSON】 深入浅出 使用QT内置的QJson模块解析Json文件 匠心之作

【QT 读取JSON】 深入浅出 使用QT内置的QJson模块解析Json文件 匠心之作

2024-07-10 07:04| 来源: 网络整理| 查看: 265

目录 0 引言1 Json数据分析2 解析Json数据

请添加图片描述

🙋‍♂️ 作者:海码007📜 专栏:QT专栏💥 标题:【QT 读取JSON】 使用QT内置的QJson模块解析Json文件❣️ 寄语:人生的意义或许可以发挥自己全部的潜力,所以加油吧!🎈 最后:文章作者技术和水平有限,如果文中出现错误,希望大家能指正 0 引言

在项目开发过程中,经常会遇到读写Json文件的需求,掌握Json文件的操作是基础中的基础。

1 Json数据分析

要读取的Json数据格式如下:

[ { "name":"ggr", "info": { "age":21, "height":174 } }, { "name":"lbw", "info": { "age":21, "height":174 } } ]

接下来以QJson模块的角度,来解析这个Json数据

整个文件数据可以转换为 QJsonDocument 类型,其中有 “[ ]” 方括号、 "{ }“花括号、” : "冒号。

被 “[ ]” 方括号包围的数据是QJsonArray数组类型。被 "{ }"花括号包围的数据是QJsonObject对象类型。" : "冒号两侧的分别是Key和Value(key : value),冒号左右有空格不影响数据读取。

先了解四个重要的类型

QJsonDocument类型,指的是整个Json数据。QJsonArray数组类型的元素是QJsonValue类型。QJsonObject类型的元素是键值对,也就是 Key: Value 类型。Key 是字符串类型,Value 的类型是 QJsonValue。QJsonValue类型 可以转换成 QJsonObject 类型、int型、double型、QString类型、QJsonArray类型等基础数据类型。

总结:QJsonDocument 可以转换为 QJsonArray 或QJsonObjec t类型。然后 QJsonArray 中的元素和 QJsonObject 中键值对的值的类型都是 QJsonValue 类型。QJsonValue 类型可以转换成QJsonArray、QJsonObject、int、double、QString、bool等类型。(相当于闭环了,设计的非常巧妙)

2 解析Json数据 首先添加一些头文件 #include // 用于打开文件 #include // 返回错误信息 #include // Json数据对象 #include // Json文档对象 #include // 普通Json对象 #include // 打印数据 新建一个函数解析Json数据 bool ReadJson::praseJsonFile(const QString &sJsonPathFn) { //--------------------------------------------------------------------------------------------- //1.读取磁盘中的文件 QFile file( sJsonPathFn ); if (!file.open(QIODevice::ReadOnly)) return false; QJsonParseError result; QJsonDocument root_Doc = QJsonDocument::fromJson(file.readAll(), &result); // 将文件数据格式化为JsonDocument对象 if( result.error != QJsonParseError::NoError ) return false; // 数据格式错误就返回 //--------------------------------------------------------------------------------------------- QJsonArray roots = root_Doc.array(); // 将JsonDocument对象转换为QJsonArray类型 //--------------------------------------------------------------------------------------------- //2.遍历QJsonArray数组 for (int i=0; i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3