原文地址:

https://blog.csdn.net/hp_cpp/article/details/80338116

Json文件是这样:

{"first fruit":{"describe":"an apple","icon":"appleIcon","name":"apple"},"second fruit":{"describe":"an orange","icon":"orangeIcon","name":"orange"},"three fruit array":["eat 0","eat 1","eat 2","eat 3","eat 4"]
}

存放在本地磁盘。 
利用QJson可以方便的进行解析。

   QFile loadFile("D:\\1.json");if(!loadFile.open(QIODevice::ReadOnly)){qDebug() << "could't open projects json";return;}QByteArray allData = loadFile.readAll();loadFile.close();QJsonParseError json_error;QJsonDocument jsonDoc(QJsonDocument::fromJson(allData, &json_error));if(json_error.error != QJsonParseError::NoError){qDebug() << "json error!";return;}QJsonObject rootObj = jsonDoc.object();//输出所有key,这一步是非必须的,放最后的话,你可能读不到任何keyQStringList keys = rootObj.keys();for(int i = 0; i < keys.size(); i++){qDebug() << "key" << i << " is:" << keys.at(i);}//因为是预先定义好的JSON数据格式,所以这里可以这样读取if(rootObj.contains("first fruit")){QJsonObject subObj = rootObj.value("first fruit").toObject();qDebug() << "describe is:" << subObj["describe"].toString();qDebug() << "icon is:" << subObj["icon"].toString();qDebug() << "name is:" << subObj["name"].toString();}if(rootObj.contains("second fruit")){QJsonObject subObj = rootObj.value("second fruit").toObject();qDebug() << "describe is:" << subObj.value("describe").toString();qDebug() << "icon is:" << subObj.value("icon").toString();qDebug() << "name is:" << subObj.value("name").toString();}if(rootObj.contains("three fruit array")){QJsonArray subArray = rootObj.value("three fruit array").toArray();for(int i = 0; i< subArray.size(); i++){qDebug() << i<<" value is:" << subArray.at(i).toString();}}

需要包含的头文件:

#include <QJsonDocument>
#include <QJsonParseError>
#include <QFile>
#include <QJsonObject>
#include <QDebug>
#include <QJsonArray>

运行结果:

key 0  is: "first fruit"
key 1  is: "second fruit"
key 2  is: "three fruit array"
describe is: "an apple"
icon is: "appleIcon"
name is: "apple"
describe is: "an orange"
icon is: "orangeIcon"
name is: "orange"
0  value is: "eat 0"
1  value is: "eat 1"
2  value is: "eat 2"
3  value is: "eat 3"
4  value is: "eat 4"

Qt工作笔记-Qt5 利用QJson从文件读取Json并解析相关推荐

  1. Qt工作笔记-Qt5中中文编码方面的笔记

    目前在使用国内的数据库和实时库接口. 说句实话,国内的东西与国外的东西比,在用户体验和接口调用上比还是存在很大的距离. 个人喜欢用QString去存储数据.个人感觉QTL比STL开发起来要快点 这里有 ...

  2. Qt工作笔记-Qt5新版信号与槽

    运行截图如下: 格式如下: [static] QMetaObject::Connection QObject::connect(const QObject *sender, PointerToMemb ...

  3. Qt工作笔记-发送端发送Json格式的数据包,接收端解析数据包

    原理以及运行 原理是因为QJsonDocument提供了一个函数toJson 可以直接把Json数据转成QByteArray,这样就可以直接发送数据包,然后再按照常规方法解析即可,本源码中含解析内容, ...

  4. 工作笔记1——利用bat脚本实现批量上传文件到ftp服务器

    工作笔记1--利用bat脚本实现批量上传文件到ftp服务器 问题概述 利用ftp命令实现上传文件 注意 限时功能 将共享目录映射到电脑中的某个盘符 实现断点续传 问题概述 公司中有大概225k个文件需 ...

  5. Qt工作笔记-在ListWidget中多线程检索数据

    文件读取技术在此链接中: https://blog.csdn.net/qq78442761/article/details/79807826 在ListWidget中单线程检索数据在此链接中: htt ...

  6. Qt工作笔记-在ListWidget中单线程检索数据

    文件读取技术在此链接中: https://blog.csdn.net/qq78442761/article/details/79807826 运行截图如下: 代码如下: widget.h #ifnde ...

  7. Qt工作笔记-使用toVariant().toMap()分割Json文件(666解析法)

    目录 概念 演示过程及源码 概念 今天看到大佬去解析Json文件的代码,简直666,特意记录此笔记,方便以后用得到,肯定会用得到. 演示过程及源码 如下面的这个Json代码,这个是调用face++的h ...

  8. Qt工作笔记-QMainWindow自定义窗体中利用状态栏进行窗体放缩

    目录 原理 关键代码 原理 在QDialog和QWidget中一般使用重写: void mouseMoveEvent(QMouseEvent *event) Q_DECL_OVERRIDE;void ...

  9. VS|Qt工作笔记-修改pro文件生成目录清晰的项目结构并添加三方库

    目录 前言 修改过程 VS运行 前言 一般用Qt Creator写好东西(用Qt Creator写Qt程序一般比vs效率高)后,要用vs进行编译,要用vs进行打开,现在来说明,如何修改pro文件,生成 ...

最新文章

  1. (三十一)java多线程二
  2. 自建通用Makefile 分享
  3. 【 MATLAB 】MATLAB 实现模拟信号采样后的重建(二)零阶保持(ZOH)
  4. Recover Binary Search Tree
  5. 一键cosplay各路动漫人物!快手的这个BlendGAN火了 | NeurIPS 2021
  6. 题目1160:放苹果
  7. ZOJ-2571 Big String Outspread 模拟
  8. Linux中su 和 su -的区别
  9. 网络编程第三讲UDP编写
  10. 【Luogu3932】浮游大陆的68号岛
  11. PHP 算法之 -- 计算器设计
  12. JavaScript常用数组操作
  13. java与c语言_Java与C语言的区别之我见
  14. 学python能做什么类型的工作-最适合学Python的几类人,有你吗?
  15. 在线编程 - PyPool小站启动记
  16. x86、ARM和MIPS三种主流芯片架构
  17. 再见!Notepad++
  18. 用户输入一个整数,求出它的各个位数,并求各位数之和
  19. 知乎带货月入过万的赚钱路子,前期操作后期可躺赚
  20. 超人前传第一至十季/全集Smallville迅雷下载

热门文章

  1. C/C++之QT攻略——在QT中容易遇到的那些坑,千万别踩了!
  2. Weblogic 数据源及连接池配置问题Warning! Connectivity to backend database not verified
  3. 史上最全企业数据产品选型对比(含数仓、报表、BI、中台、数据治理)
  4. 10W人都想知道的答案!可视化黑科技,这4个数据工具谁最厉害的?
  5. 7个理由,给你推荐这款“秒杀Excel”的分析神器!
  6. 你最隐秘的性格在哪?
  7. C/C++ 不可不知道的编程技巧!第一部分
  8. 4年,我终于成了千万富翁
  9. 第五节:简单又强大的数据类型:any任意值
  10. 要求程序员加班?你就大错特错了