做网站建设公司排名,织梦cms通用蓝白简介大气企业网站环保科技公司源码,企业用酒解决方案,棋牌源码之家文章目录概要#xff1a;本期主要介绍Qt解析JSON数据格式文件的方式。一、JSON数据格式1.JSON类似于XML#xff0c;在JSON文件中#xff0c;有且只有一个根节点2.JSON有两种主流包含型构造字符#xff1a;{对象}、[数组]3.JSON的值主要包括#xff1a;对象、数组、数字、字…
文章目录概要本期主要介绍Qt解析JSON数据格式文件的方式。一、JSON数据格式1.JSON类似于XML在JSON文件中有且只有一个根节点2.JSON有两种主流包含型构造字符{对象}、[数组]3.JSON的值主要包括对象、数组、数字、字符串以及三种字面值ture、fasle、null4.JOSN中的对象和数组是可以互相作为对方的子元素形成复杂的嵌套结构可以表达出完整的流程。二、Qt中对于JSON数据格式的处理1.QJsonDocument2.QJsonObject3.QJsonArray4.QJsonValue三、Qt解析JSON数据格式简述实现步骤1.将json文件转为QJsonDocument对象2.通过isObject或者isArray来获取QJsonObejct对象或者QJsonArray对象3.QJsonObject对象类似map容器通过键值对存储。可以通过获取所有key遍历获取所有值.值的类型是QJsonValue可以转成对象、数组、数字、字符串、布尔。4.QJsonArray对象类似数组可以直接通过下标访问值的类型是QJsonValue可以转成对象、数组、数字、字符串、布尔。结尾概要本期主要介绍Qt解析JSON数据格式文件的方式。
一、JSON数据格式
JSONJavaScript Object Notation是一种轻量级的数据交换格式。易于人阅读和编写可以在多种语言之间进行数据交换。同时也易于机器解析和生成。相对于Xml数据格式有更好的可读性并且在网络传输中有更好的传输效率。
1.JSON类似于XML在JSON文件中有且只有一个根节点
2.JSON有两种主流包含型构造字符{对象}、[数组]
3.JSON的值主要包括对象、数组、数字、字符串以及三种字面值ture、fasle、null
4.JOSN中的对象和数组是可以互相作为对方的子元素形成复杂的嵌套结构可以表达出完整的流程。
二、Qt中对于JSON数据格式的处理
Qt5之后新增了对JSON数据格式的解析类QJsonDocument、QJsonObject、QJsonArrary、QJsonValue。
1.QJsonDocument
JSON文档类。 JsonFormat { “Array”: [ true, 999, “string” ], “Key”: “Value”, “null”: null }
2.QJsonObject
JSON的对象类由键值对组成也就是QString和QJsonValue组成。
3.QJsonArray
JSON的数组类由一系列的JSON的值QJsonValue组成
4.QJsonValue
JSON的值。可以是bool、数字、字符串、数组、对象。
三、Qt解析JSON数据格式
这里仅解析简单的不含嵌套结构的json文件因为json文件和xml文件一样如果不知道其内部的构造结构解析出来比较麻烦但是如果你清楚其内部结构就可以通过下述解析方法轻松地解析出想要的数据。
简述实现步骤
1.将json文件转为QJsonDocument对象
2.通过isObject或者isArray来获取QJsonObejct对象或者QJsonArray对象
3.QJsonObject对象类似map容器通过键值对存储。可以通过获取所有key遍历获取所有值.值的类型是QJsonValue可以转成对象、数组、数字、字符串、布尔。
4.QJsonArray对象类似数组可以直接通过下标访问值的类型是QJsonValue可以转成对象、数组、数字、字符串、布尔。
QVectorQString JsonOperate::ParseJsonFile(QString _path)
{QVectorQString _vec ;_vec.clear();QDir _dir(_path);QFile _file(_dir.absoluteFilePath(_path));//创建文件对象if(!_file.exists()){qDebug()QString::fromLocal8Bit(不存在该文件)endl;return _vec;}if(!_file.open(QIODevice::ReadOnly)){qDebug()QString::fromLocal8Bit(文件打开失败)endl;return _vec;}QByteArray _byte _file.readAll();QJsonParseError _error;QJsonDocument _doc QJsonDocument::fromJson(_byte,_error);//将json文件中的内容转成json文件对象_file.close();//开始解析QJsonObject _obt;QJsonArray _array;if(_doc.isObject())//根节点是json对象{_obt _doc.object();//获取对应json对象QStringList _keys _obt.keys();for(int i 0;i _keys.count();i )//将每个键值对组成 kes : value 的字符串格式{QString _tempStr _keys.at(i);_tempStr :;_tempStr _obt.value(_keys[i]).toString();_vec.push_back(_tempStr);}}else{_array _doc.array();//获取对应json数组for(int i 0;i _array.count();i ){QString _tempStr _array.at(i).toString();_vec.push_back(_tempStr);}}return _vec;
}结尾
上面的解析方式仅适用于Qt5如果是只使用C的话可以使用GitHub上jsoncpp库来解析JSON文件用法也很简单