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的处理相关推荐

  1. QT解析 JSON 格式的数据

    QT解析 JSON 格式的数据 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.JSON 采用完全独立于语言的文本格式,这些特性使 JSON 成为理想的数 ...

  2. 【Qt】Qt中JSON简介

    00. 目录 文章目录 00. 目录 01. JSON简介 02. JSON Support in Qt 03. JSON类 04. 附录 01. JSON简介 1.1 JSON概述 JSON(Jav ...

  3. Qt的json对象不具备类似指针、引用的行为导致的更新不成功问题解决

    如下代码: QJsonArray actionsArray; QJsonObject totalRootJson; totalRootJson.insert("actionsArray&qu ...

  4. Qt读取Json文件数据

    Qt读取Json文件数据 void TcpServerCfg::initServerCfgList() {serverCfgList.clear();QString name = "./co ...

  5. qt解析json数据

    qt解析json的数据,需要使用的类有qjsonobject,qjsonarray,qjsondocument. qjsondocument是用于读取或者写入json文件 qjsonarray是封装一 ...

  6. QT读写JSON文件

    QT对JSON的处理 JSON的样式 1,Json对象 2,Json数组 QT中对JSON处理 1,写入JSON文件 2,解析JSON文件 JSON的样式 1,Json对象 JSON的样式是可以相互嵌 ...

  7. Qt之JSON生成与解析

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.它基于JavaScript(Standard ECMA-262 3rd Edition - December ...

  8. 1.关于QT中json数据处理和密码md5加密

     新建一个Qt空项目 17Json.pro HEADERS += \ MyWidget.h SOURCES += \ MyWidget.cpp QT += widgets gui MyWidget ...

  9. Qt之JSON教程-实战篇

    以实战例子讲述JSON三兄弟的后续故事. 实战一:发送JSON网络请求   作为JSON老大哥的QJsonValue自知对面的大户人家妹子貌美如花,心里已经打起算盘,先下手为强,后下手遭殃.决定显示下 ...

最新文章

  1. BZOJ 1101: [POI2007]Zap
  2. 【Linux】17_计划任务
  3. Python:wordcloud.wordcloud()函数的参数解析及其说明
  4. UVALive 3942 Remember the Word(字典树+DP)
  5. sql语句中as的用法和作用
  6. 最适合编程的10大字体推荐
  7. hihoCoder #1143 : 骨牌覆盖问题·一
  8. Java lambda expression
  9. linux定时任务的设置 crontab 配置指南
  10. 2018,扬帆起航!
  11. 社区发现算法————总结
  12. riscv-gnu-toolchain
  13. 硬盘加密软件测试工资,实测加密软件BitLocker对硬盘性能有何影响
  14. 原生js动态添加元素
  15. AIMD response function的一般推导
  16. 轻量级网络之GhostNet
  17. 开机自启动Screen并在后台运行程序
  18. TextView和EditText的gettext()方法
  19. 1100. 校庆 (25 分)
  20. adb通过wifi连接真机

热门文章

  1. 代码之谜(零) - 其实,你不懂代码
  2. 《Effective Java》阅读笔记7 避免使用终结方法
  3. Ubuntu16.04(笔记本摄像头测试)orb-slam2
  4. float元素对父元素高度的影响,img、a及浏览器之间兼容性问题
  5. 【题解】CF923A:Primal Sport
  6. GIoU Loss 损失函数浅析
  7. murmurhash 下载_MurmurHash3?
  8. 新世纪直升机技术的发展趋势
  9. 第十二届蓝桥杯省赛 Java 大学 B 组—砝码称重—满分百分题解
  10. 【题解】【蓝桥杯】试题 历届真题 砝码称重【第十二届】【省赛】【B组】