【QT 读取JSON】 深入浅出 使用QT内置的QJson模块解析Json文件 匠心之作 |
您所在的位置:网站首页 › 文件括号类型 › 【QT 读取JSON】 深入浅出 使用QT内置的QJson模块解析Json文件 匠心之作 |
目录
0 引言1 Json数据分析2 解析Json数据
在项目开发过程中,经常会遇到读写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 |