Qt工作笔记-Qt5 利用QJson从文件读取Json并解析
原文地址:
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并解析相关推荐
- Qt工作笔记-Qt5中中文编码方面的笔记
目前在使用国内的数据库和实时库接口. 说句实话,国内的东西与国外的东西比,在用户体验和接口调用上比还是存在很大的距离. 个人喜欢用QString去存储数据.个人感觉QTL比STL开发起来要快点 这里有 ...
- Qt工作笔记-Qt5新版信号与槽
运行截图如下: 格式如下: [static] QMetaObject::Connection QObject::connect(const QObject *sender, PointerToMemb ...
- Qt工作笔记-发送端发送Json格式的数据包,接收端解析数据包
原理以及运行 原理是因为QJsonDocument提供了一个函数toJson 可以直接把Json数据转成QByteArray,这样就可以直接发送数据包,然后再按照常规方法解析即可,本源码中含解析内容, ...
- 工作笔记1——利用bat脚本实现批量上传文件到ftp服务器
工作笔记1--利用bat脚本实现批量上传文件到ftp服务器 问题概述 利用ftp命令实现上传文件 注意 限时功能 将共享目录映射到电脑中的某个盘符 实现断点续传 问题概述 公司中有大概225k个文件需 ...
- Qt工作笔记-在ListWidget中多线程检索数据
文件读取技术在此链接中: https://blog.csdn.net/qq78442761/article/details/79807826 在ListWidget中单线程检索数据在此链接中: htt ...
- Qt工作笔记-在ListWidget中单线程检索数据
文件读取技术在此链接中: https://blog.csdn.net/qq78442761/article/details/79807826 运行截图如下: 代码如下: widget.h #ifnde ...
- Qt工作笔记-使用toVariant().toMap()分割Json文件(666解析法)
目录 概念 演示过程及源码 概念 今天看到大佬去解析Json文件的代码,简直666,特意记录此笔记,方便以后用得到,肯定会用得到. 演示过程及源码 如下面的这个Json代码,这个是调用face++的h ...
- Qt工作笔记-QMainWindow自定义窗体中利用状态栏进行窗体放缩
目录 原理 关键代码 原理 在QDialog和QWidget中一般使用重写: void mouseMoveEvent(QMouseEvent *event) Q_DECL_OVERRIDE;void ...
- VS|Qt工作笔记-修改pro文件生成目录清晰的项目结构并添加三方库
目录 前言 修改过程 VS运行 前言 一般用Qt Creator写好东西(用Qt Creator写Qt程序一般比vs效率高)后,要用vs进行编译,要用vs进行打开,现在来说明,如何修改pro文件,生成 ...
最新文章
- (三十一)java多线程二
- 自建通用Makefile 分享
- 【 MATLAB 】MATLAB 实现模拟信号采样后的重建(二)零阶保持(ZOH)
- Recover Binary Search Tree
- 一键cosplay各路动漫人物!快手的这个BlendGAN火了 | NeurIPS 2021
- 题目1160:放苹果
- ZOJ-2571 Big String Outspread 模拟
- Linux中su 和 su -的区别
- 网络编程第三讲UDP编写
- 【Luogu3932】浮游大陆的68号岛
- PHP 算法之 -- 计算器设计
- JavaScript常用数组操作
- java与c语言_Java与C语言的区别之我见
- 学python能做什么类型的工作-最适合学Python的几类人,有你吗?
- 在线编程 - PyPool小站启动记
- x86、ARM和MIPS三种主流芯片架构
- 再见!Notepad++
- 用户输入一个整数,求出它的各个位数,并求各位数之和
- 知乎带货月入过万的赚钱路子,前期操作后期可躺赚
- 超人前传第一至十季/全集Smallville迅雷下载
热门文章
- C/C++之QT攻略——在QT中容易遇到的那些坑,千万别踩了!
- Weblogic 数据源及连接池配置问题Warning! Connectivity to backend database not verified
- 史上最全企业数据产品选型对比(含数仓、报表、BI、中台、数据治理)
- 10W人都想知道的答案!可视化黑科技,这4个数据工具谁最厉害的?
- 7个理由,给你推荐这款“秒杀Excel”的分析神器!
- 你最隐秘的性格在哪?
- C/C++ 不可不知道的编程技巧!第一部分
- 4年,我终于成了千万富翁
- 第五节:简单又强大的数据类型:any任意值
- 要求程序员加班?你就大错特错了