QT日记八,QT中的json应用
一、什么是json
{ "error_code": 0, "reason": "请求成功!","result": [ {"day": 1, "des": "1907年11月1日 电影导演吴永刚诞生 吴永刚,1907年11月1日生于江苏吴县。1932年后参加影片《三个摩登女性》、《母性之光》的拍摄工作。1934年在联华影片公司编导处女作《神女》,一举成名,...", "id": 9000, "lunar": "丁未年九月廿六","month": 11, "pic": "", "title": "电影导演吴永刚诞生", "year": 1907 },{"day": 1,"des": "1902年11月1日 挪威作家格里格诞生 格里格,1902年11月1日生于卑尔根。挪威作家。 青年时代在奥斯陆和牛津求学,好旅行。1924年出版描写海员生活的小说《航船在前进》。1926年至1927年在...","id": 9010,"lunar": "壬寅年十月初二","month": 11,"pic": "","title": "挪威作家格里格诞生","year": 1902},{"day": 1,"des": "1911年11月1日,清廷宣布解散皇族内阁,任命袁世凯为内阁总理大臣,要他赶快从前线回京,筹组“责任内阁”。11月13日,袁世凯抵达北京,16日组织新内阁,以梁郭彦为外务大臣,赵秉钧为民政大臣,...","id": 3577,"lunar": "辛亥年九月十一","month": 11,"pic": "","title": "袁世凯出任清朝内阁总理大臣","year": 1911}]
}
二、解析Json的步骤:
QJsonDocument
fromJson(const QByteArray &json, QJsonParseError *error = nullptr)
QJsonObject object() const
功能:从QJsonDocument中得到一个QJsonObject
QJsonArray array() const
功能:从QJsonDocument中得到一个QJsonArray
//1 读取文件中数据QFile file("../qt_day6_1_json_parser/text.json");if(file.open(QIODevice::ReadOnly)){QByteArray array = file.readAll();//2. 数据解析 ---- 从文档的最外层开始,一层一层往里进行解析,遇见 "{" --- 就使用QJsonObject 遇见 "["--- 就使用QJsonArray//然后真正去获取值时,要通过键值对的键来进行,键是字符串类型--- value(QString key),最后,根据数据的类型通过to系统方法来转换完成//第一步:将字节数组转换成json文档QJsonDocument doc = QJsonDocument::fromJson(array);//第二步:QJsonDocument文档类中,包括了json对象和json数据这两个成员,所以就有两对象set/get函数// QJsonObject object() const 和 void setObject(const QJsonObject &object)// void setArray(const QJsonArray &array) QJsonArray array() const//根据json数据格式,最外面是json对象({})还是json数组([]),如果是json对象,则使用QJsonObject object() constQJsonObject object = doc.object();//第三步:不管是json对象还是json数组,它们里面的数据都是键值对组成,所以,就可以通过键来获了对应的值 --- value//QJsonValue value(const QString &key) const QJsonValue是可以转换成数字 字符串 和对象 数组,是//通过这个类的to****()方法来完成QJsonArray resultArray = object.value("result").toArray(); //如果是json数组的话,跟数组的概念完全相同//通过for循环来遍历 数据for (int i=0;i<resultArray.size();i++) {QJsonObject resultObject = resultArray.at(i).toObject();QString title = resultObject.value("title").toString();int year = resultObject.value("year").toInt();qDebug() << "title = " << title;qDebug() << "year = " << year;}}file.close();
三、解析数据时常用的接口
QJsonArray array() const //通过get方法,得到QJsonDocument类中的json 数组QJsonObject object() const//通过get方法,得到QJsonDocument类中的json 对象
②打包时
void setArray(const QJsonArray &array)//将QJsonArray打包到 QJsonDocument中void setObject(const QJsonObject &object)
③将QJsonDocument和QByteArray相互转换的接口:
静态成员函数:
QJsonDocumen t fromJson(const QByteArray &json, QJsonParseError *error = nullptr)
QByteArray toJson() const
QByteArray toJson(QJsonDocument::JsonFor mat format) const
QJsonValue at(int i) const
QJsonArray toArray(const QJsonArray &defaultValue) const QJsonArray toArray() const bool toBool(bool defaultValue = false) const double toDouble(double defaultValue = 0) const int toInt(int defaultValue = 0) const QJsonObject toObject(const QJsonObject &defaultValue) const QJsonObject toObject() const QString toString() const QString toString(const QString &defaultValue) const
②获取数组中 元素的个数
int size() const
QJsonValue value(const QString &key) const
QJsonValue value(QLatin1String key) const
QT日记八,QT中的json应用相关推荐
- 【QT日记】QT MYSQL 链接方法 QMYSQL driver not loaded解决方法 qt5.13 mysql5.7
相信很多第一次在QT下链接MYSQL的朋友都会遇到这个问题: 读取不到QMYSQL的驱动,QSqlDatabase支持的驱动有:QSQLITE QODBC QODBC3 QPSQL QPSQL7 [就 ...
- Qt中的JSON支持
Qt中的JSON支持 Qt中的JSON支持 概述 JSON类 Qt中的JSON支持 Qt提供了处理JSON数据的支持.JSON是一种对源自Javascript的对象数据进行编码的格式,但现在已广泛用作 ...
- 在QT中使用JSON
在QT中使用JSON 在QT中使用JSON数据包其实很简单 1. QT中如何使用JSON JSON数据包一般有两种形式,一种是对象,一种是数组.用大括号 {} 扩起来的叫对象,用中括号 [] 扩起来的 ...
- Qt中的JSON操作_1: JSON的基本知识介绍(JSON格式、JSON数组、JSON对象、应用场景)
总结放于前: JSON是一种利用JSON数组和JSON对象描述数据内容的数据格式,采用树状的结构,只能有一个父节点,子节点不设限,但父子节点均为JSON对象或者JSON数组. 1. Json 简介 J ...
- FFmpeg开发(八)——Qt视频播放器之多线程的使用(参考了暴风影音、迅雷影音)
FFmpeg开发(八)--Qt视频播放器之多线程的使用(参考了暴风影音.迅雷影音) 上篇文章介绍了: FFmpeg开发(七)--Qt视频播放器之播放列表类(参考了暴风影音.迅雷影音) 本播放器系列相关 ...
- Qt on Android: http下载与Json解析
百度提供有查询 ip 归属地的开放接口,当你在搜索框中输入一个 ip 地址进行搜索,就会打开由 ip138 提供的百度框应用,你可以在框内直接输入 ip 地址查询.我查看了页面请求,提取出查询 ip ...
- 【原创】QT在嵌入式系统中显示中文的方法
[原创]QT在嵌入式系统中显示中文的方法 此篇文章主要借鉴:http://zzqh007.blog.163.com/blog/static/44434847201011312168296/ 移植QT4 ...
- Qt 图形视图框架中的事件处理和传播
目录名字 Qt 图形视图框架中的事件处理和传播 要点: Qt 图形视图框架中的事件处理和传播 图形视图框架在一些动画类的应用程序上经常会用到.该框架中的事件处理与传播机制也是经常会涉及. 程序设计核心 ...
- Qt工程文件Pro中判断Qt版本号
需求 在Qt开发中,可能会有这样的需求,需要根据Qt版本来决定加载不同的库,或者定义宏.添加不同的文件等等,那这就需要在工程文件中对当前Qt版本进行判断了. 正文 Qt版本判断 最基础的需求,查看当前 ...
最新文章
- JavaScript对象的几种创建方式?
- 【转载】突然觉得今年的时间过得太快了,不知不觉中还剩下四个多月就步入2017年了,回首一下,好像什么都还没做呢。...
- 使用cocoaPods一键集成第三方登录(新浪微博,qq,微信)
- IAR 下C中嵌入汇编
- ParaView的简单用法
- 论大学学霸是怎样炼成的……
- 2021-01-01 中国公务员级别
- 云计算时代的软件行业变化
- 支持笔锋效果的手写签字控件
- java海贼王秘宝传说下载_我的世界1.7.10海贼王整合包
- IDEA 闪退,并在C盘生成文件java_error_in_idea_****.log
- 腾讯小程序php,微信小程序实现使用腾讯地图SDK步骤详细介绍
- bzoj4372 烁烁的游戏
- 图片去背景,在线图片去底色工具
- paymob QB冲值接口
- PID控制的理解与参数整定
- 安卓 Installation via USB is disabled
- PHP curl 执行结果老是301 Moved Permanently
- 2021智慧政务领域最具商业合作价值企业盘点
- 和iPhone14一样高的像素?全网首测OAK-1-MAX人工智能相机
热门文章
- css3运动后留下轨迹尾巴_利用CSS+JS实现唯美星空轨迹运动效果
- 随身助手在线music纯净版PHP源码
- CoreGraphics 画图,(转燕羽天空)
- ios safari 模拟器_电脑也能运行iOS?这款iOS模拟器到底靠谱吗
- was服务器配置文件路径,websphere(was)配置文件
- 快速入门并上手redis持久化技术RDB和AOF
- HR待遇怎么样?需要考取什么证书?
- 基于Arduino或者Stm32的智能台灯
- rlimit Linux下限制资源的使用(Limiting Resource Usage)
- 基于java+springboot+mybatis+vue+elementui的网上书籍购买商城