Qt对json的处理
Qt处理json
Qt中操作json用到的头文件
#include <QJsonDocument> #include <QJsonArray> #include<QJSonObject> #include <QByteArray> #include <QJsonValue> #include <QFile>
json 对象 {} --开头 json数组[]–开头
说明:
- json对象格式的字符串都是以键值对的形式存在的------->key:value,其中key都是以字符串的形式存在的,而value部分可以包含:int, bool char double 等多种类型,value还可以是子对象或者数组
- 在json文件中,只能是json对象和json数组,不能既有json对象也有json数组
- 在json对象内部,可以包含子json对象,也可以有子json数组
- 在json数组内部,可以有子json对象,也可以有子json数组,也可以是double int string
将json格式的字符串写入磁盘文件的代码如下
#include <QCoreApplication>
#include <QJsonObject>
#include <QJsonArray>
#include <QJsonDocument>
#include <QByteArray>
#include <QFile>
#include <QDebug>
#include <QVariantList>void writeJsonToFile(QString fileName){// 第一种 =================将json对象写入磁盘文件//创建json对象QJsonObject json;//给json对象插入值json.insert("name","xiaowang");json.insert("age","123");json.insert("sex","female");//插入子对象QJsonObject subJson;subJson.insert("father","laowang");subJson.insert("mather","liu");subJson.insert("sister","huanhuan");json.insert("family",subJson);//插入json数组QJsonArray jsonArr;jsonArr.append(10);jsonArr.append("fangfang");jsonArr.append(10.7);jsonArr.append(true);json.insert("temp",jsonArr);//第二种::::::::::::::::::::::写json数组到文件//构建一个QJsonArray对象QJsonArray jsonArr2;jsonArr2.append(10);jsonArr2.append("xiaowang");jsonArr2.append(true);//添加子数组QJsonArray subArr;subArr.append("fangfang");subArr.append("wodefang");subArr.append(10);jsonArr2.append(subArr);//添加对象到array;jsonArr2.append(json);//将QJsonObject转为QJsonDocument QJsonDocument(const QJsonObject &object)QJsonDocument jsonDoc(jsonArr2);//将QJsonDocument对象转换为QByteArray对象 QJsonDocument::toJson(QJsonDocument::JsonFormat format) constQByteArray byteArr = jsonDoc.toJson(QJsonDocument::Indented);//文件操作 -- 将byteArr写入文件QFile file(fileName);file.open(QIODevice::ReadWrite);file.write(byteArr);file.close();return;
}void readJsonFromFile(QString fileName)
{//构造QFile类对象QFile file;file.setFileName(fileName);file.open(QIODevice::ReadWrite);QByteArray testJsonArry = file.readAll();// 将QByteArray对象转换为QJsonDocument对象QJsonDocument jsonDoc = QJsonDocument::fromJson(testJsonArry);// jsonDoc.fromJson(testJsonArry);file.close();if(jsonDoc.isArray()){QJsonArray jsonArr = jsonDoc.array();QVariantList jsonArrList = jsonArr.toVariantList();for(int i= 0; i < jsonArrList.size();i++){qDebug() << "keys = " << jsonArrList.at(i);}}else if(jsonDoc.isObject()) {QJsonObject jsonObj = jsonDoc.object();QStringList keysList = jsonObj.keys();for(int i= 0; i < keysList.size();i++){QString keys = keysList.at(i);QJsonValue jsonValue = jsonObj.value(keys);//判断value值得类型if(jsonValue.isString()){qDebug() << keys << ":" << jsonValue.toString();}else if(jsonValue.isDouble()){qDebug() << keys << ":" << jsonValue.toInt();}else if(jsonValue.isBool()){qDebug() << keys << ":" << jsonValue.toBool();}else if(jsonValue.isObject()){QJsonObject obj = jsonValue.toObject();QStringList subKeys = obj.keys();qDebug() << keys << ": {";for(int k = 0; k < subKeys.size(); k++){QString subkeys = subKeys[k];QJsonValue subjsonValue = obj.value(subkeys);qDebug() <<" "<<subkeys<<":" << subjsonValue.toString();}qDebug() << " }";}else if(jsonValue.isArray()){QJsonArray arr = jsonValue.toArray();qDebug() << keys << ": [";for(int j = 0;j < arr.size();j++){QJsonValue va = arr[j];if(va.isString()){qDebug() << " " << va.toString();}}qDebug() << " ]";}}}
}int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);// writeJsonToFile("D:\\QtProject\\jsonDemo\\testJsonArray.json");readJsonFromFile("D:\\QtProject\\jsonDemo\\test.json");return a.exec();
}
Qt对json的处理相关推荐
- QT解析 JSON 格式的数据
QT解析 JSON 格式的数据 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.JSON 采用完全独立于语言的文本格式,这些特性使 JSON 成为理想的数 ...
- 【Qt】Qt中JSON简介
00. 目录 文章目录 00. 目录 01. JSON简介 02. JSON Support in Qt 03. JSON类 04. 附录 01. JSON简介 1.1 JSON概述 JSON(Jav ...
- Qt的json对象不具备类似指针、引用的行为导致的更新不成功问题解决
如下代码: QJsonArray actionsArray; QJsonObject totalRootJson; totalRootJson.insert("actionsArray&qu ...
- Qt读取Json文件数据
Qt读取Json文件数据 void TcpServerCfg::initServerCfgList() {serverCfgList.clear();QString name = "./co ...
- qt解析json数据
qt解析json的数据,需要使用的类有qjsonobject,qjsonarray,qjsondocument. qjsondocument是用于读取或者写入json文件 qjsonarray是封装一 ...
- QT读写JSON文件
QT对JSON的处理 JSON的样式 1,Json对象 2,Json数组 QT中对JSON处理 1,写入JSON文件 2,解析JSON文件 JSON的样式 1,Json对象 JSON的样式是可以相互嵌 ...
- Qt之JSON生成与解析
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.它基于JavaScript(Standard ECMA-262 3rd Edition - December ...
- 1.关于QT中json数据处理和密码md5加密
新建一个Qt空项目 17Json.pro HEADERS += \ MyWidget.h SOURCES += \ MyWidget.cpp QT += widgets gui MyWidget ...
- Qt之JSON教程-实战篇
以实战例子讲述JSON三兄弟的后续故事. 实战一:发送JSON网络请求 作为JSON老大哥的QJsonValue自知对面的大户人家妹子貌美如花,心里已经打起算盘,先下手为强,后下手遭殃.决定显示下 ...
最新文章
- BZOJ 1101: [POI2007]Zap
- 【Linux】17_计划任务
- Python:wordcloud.wordcloud()函数的参数解析及其说明
- UVALive 3942 Remember the Word(字典树+DP)
- sql语句中as的用法和作用
- 最适合编程的10大字体推荐
- hihoCoder #1143 : 骨牌覆盖问题·一
- Java lambda expression
- linux定时任务的设置 crontab 配置指南
- 2018,扬帆起航!
- 社区发现算法————总结
- riscv-gnu-toolchain
- 硬盘加密软件测试工资,实测加密软件BitLocker对硬盘性能有何影响
- 原生js动态添加元素
- AIMD response function的一般推导
- 轻量级网络之GhostNet
- 开机自启动Screen并在后台运行程序
- TextView和EditText的gettext()方法
- 1100. 校庆 (25 分)
- adb通过wifi连接真机