Qt之JSON教程-实战篇
以实战例子讲述JSON三兄弟的后续故事。
实战一:发送JSON网络请求
作为JSON老大哥的QJsonValue自知对面的大户人家妹子貌美如花,心里已经打起算盘,先下手为强,后下手遭殃。决定显示下自己的家底,想起这件事,老大哥回想到5年前错过的妹子,当时妹子说我们不适合,大哥问,我对你还不够好么。但妹子说了一句让老大哥彻底伤心的话。做我的男朋友要有QQ会员,可惜你不是。
老大哥找了QNetworkAccessManager以json的方式发送自己的QQ会员和账号,以表明自己的诚意。
QJsonArray jsonArray;
jsonArray<<1<<2<<3;QJsonObject jsonObject;
jsonObject["account"] = "xxxxx";
jsonObject["vip"] = "8";
jsonObject["array"] = jsonArray;QNetworkAccessManager manager;
QNetworkRequest request(QUrl("https://www.example.com"));
request.setRawHeader("Content-Type", "application/json");QNetworkReply* reply = manager.post(request, QJsonDocument(jsonObject).toJson());
QEventLoop eventLoop;
QObject::connect(reply, SIGNAL(finished()), &eventLoop, SLOT(quit()));
eventLoop.exec(); // 进入等待返回,但ui事件循环依然进行。QByteArray result = reply->readAll();
qDebug()<<result;
躲着墙角的二哥QJsonObject看到了老大哥的一举一动,暗暗窃喜,还好我也是QQ会员,于是在发送数据处做了些小修改以彰显自己的QQ会员等级。
QNetworkReply* reply = manager.post(request, R"({"account": "xxxxx","vip": "8","array": [1, 2, 3]})");
看起来简单明了,妹子肯定是我的了。二哥,心里暗暗窃喜。
螳螂捕蝉黄雀在后,三弟QJsonArray手拿银子默念,大哥和二哥都不让下弟弟的,尽是QQ会员,还好我不赖,昨天问了爹爹拿钱充了vip8。三弟也发自己的QQ会员过去了,只是方式略有个性。
QNetworkReply* reply = manager.post(request, "{\"account\":\"xxxxx\",\"vip\":\"8\",\"array\":[1,2,3]}");
三兄弟按照昨天约定的时间到村口客栈见面。看到妹子赶紧走上前表示自己的QQ会员等级有多高,大哥还没说出话来就被大妹子打断了,说你装载JSON数据麻烦!转头又说二哥虽然简洁,但过于占地方。三弟自然看到面前这么凶恶的妹子,自然不敢说话低着头说,数据反斜杠转义过多,不利于数据操作。
三兄弟非常灰心,原来QQ会员也帮不到我了。
实战二:读写json格式的配置文件
老大哥垂头丧气说,QQ会员也没有用了呀,仍了可惜,不如我们埋了它,当是埋葬我们逝去的青春。二哥三弟听后感动得不要不要的,就赶紧拿了家里祖传的铲子挖泥了。他们将QQ信息放(写)在一个叫config.json
的酒壶里。
QJsonObject jsonObject;
jsonObject["account"] = "xxxxx";
jsonObject["password"] = "xxxxx"
jsonObject["vip"] = "8";
QJsonArray jsonArray { 1, 2, 3 };jsonObject["array"] = jsonArray;
QFile file("config.json");
if (! file.open(QIODevice::WriteOnly)) {qDebug()<<"文件打开失败。";return false;
}QByteArray data = QJsonDocument(jsonObject).toJson();
file.write(data);
file.close();
一天晚上管家拿着铲子在挖泥,手里捧着他们三兄弟前几天放的青春。管家碎碎念说了一句,终于拿到你们的QQ了,还是会员。
QFile file("config.json");
if (! file.open(QIODevice::ReadOnly)) {qDebug()<<"文件打开失败。";return false;
}QByteArray data = file.readAll();
QJsonParseError jsonError;
QJsonDocument jsonDoc = QJsonDocument::fromJson(data, &jsonError);
if (jsonError.error != QJsonParseError::NoError) {qDebug()<<"Json文件解析错误。";return false;
}if (jsonDoc.isObject()) {QJsonObject jsonObject = jsonDoc.object();qDebug()<<jsonObject;
}
else if (jsonDoc.isArray()) {QJsonArray jsonArray = jsonDoc.array();qDebug()<<jsonArray;
}
else {qDebug()<<"Json文件解析为空。";
}file.close();
- 文章首发于微信公众号:Qt君
Qt之JSON教程-实战篇相关推荐
- 下载 嵌入式qt实战教程pdf_Qt之JSON教程-实战篇
以实战例子讲述JSON三兄弟的后续故事. 实战一:发送JSON网络请求 作为JSON老大哥的QJsonValue自知对面的大户人家妹子貌美如花,心里已经打起算盘,先下手为强,后下手遭殃.决定显示下自己 ...
- json qbytearray 串 转_Qt之JSON教程-使用篇
以故事方式来学习如何使用Qt接口来操作JSON数据. JSON三兄弟 老大哥QJsonValue主要用于封装JSON值,类似于QVariant. 它能够存储以下值:与QVariant互转 QJsonV ...
- JSON解析实战篇:JSON数组中含JSON数组
少年最好的地方就是:嘴里说着要放弃,心里却都憋着一口气. 前言 关于JSON和本文中所用的Fastjson介绍,可以查看我的这两篇博客: JSON简介:什么是JSON -> https://bl ...
- Susy 2 教程 — 实战篇
Susy 2 教程 - 入门篇 Susy 2 教程 - Shorhand 篇 在前面介绍了Susy2的配置(config)和简写(shorthand)之后,给大家介绍一下Tookit中几个常用的宏,然 ...
- 土人系列AS入门教程--实战篇
这次我们要进入实战,我要教你们做一个很简单的游戏,下面的每句代码我都会加上注释,如果你看过上面的教程,我想要全部理解应该不会困难. 现在让我们开始吧.这个游戏是我初学的时候按教程做的一个游戏,所以印象 ...
- python 读取鼠标选中文本_木辛老师的编程课堂:Python和Qt之页面布局实战篇(一)...
通过前几节课的学习,我们已经基本上掌握了使用Qt Designer完成简单的布局管理.通过这些知识的学习,我们算是对PyQt进行了初步的了解,也算是入门了! 但是仅仅掌握这些知识还是远远不够的: 高深 ...
- Systemd 入门教程:实战篇
Systemd 入门教程:实战篇 原文出处: 阮一峰(@ruanyf) http://blog.jobbole.com/98671/?utm_source=blog.jobbole.com& ...
- [知识图谱实战篇] 三.Python提取JSON数据、HTML+D3构建基本可视化布局
前面作者讲解了很多知识图谱原理知识,包括知识图谱相关技术.Neo4j绘制关系图谱等,但仍缺少一个系统全面的实例.为了加深自己对知识图谱构建的认识,为后续创建贵州旅游知识图谱打下基础,作者深入学习了张宏 ...
- [知识图谱实战篇] 二.Json+Seaborn可视化展示电影实体
前面作者讲解了很多知识图谱原理知识,包括知识图谱相关技术.Neo4j绘制关系图谱等,但仍缺少一个系统全面的实例.为了加深自己对知识图谱构建的认识,为后续创建贵州旅游知识图谱打下基础,作者深入学习了张宏 ...
最新文章
- php中soap的使用以及wsdl的生成
- Understanding Clouds from Satellite Images的kernel调研+肉眼识别每种云朵示例
- 来来来,送开发板了。
- 基于node.js及express实现中间件,实现post、get
- django-orm-查询基本操作
- 奥迪推出大型自动驾驶数据集A2D2
- 仓库保管工计算机试题,仓库保管工中级试卷答案.doc
- Android仿人人客户端(v5.7.1)——对从服务器端(网络)获取的图片进行本地双缓存处理(编码实现)...
- vue进阶学习组件03
- Go语言核心36讲(Go语言实战与应用十九)--学习笔记
- detectron2训练自己的数据集_从零教你训练自己的数据集实现汽车标志识别,汽车品牌识别源码
- java struts2教程_Struts2教程--第一章 搭建Struts2开发环境
- 条码软件如何修改条码标签的字体格式
- 2021-03-26 大数据技术对企业管理的影响和应用前景分析
- 时序动作检测《BMN: Boundary-Matching Network for Temporal Action Proposal Generation》
- STM32学习100步之第四十二步——触摸按键驱动程序
- 在html中字怎么修改位置,css怎么设置字体位置?
- python好学么零基础_python编程好学吗 自学行吗
- 3d打印机品牌排行榜揭晓,stratasys公司名列前茅
- 欲登千层楼,又何惧寒风
热门文章
- 【Python】Python获取当前是否是股市交易日
- YYKit系列之——YYCache使用
- [Vue warn]: Property or method “throttle“ is not defined on the instance but referenced during rende
- hadoop集群web页面无法显示节点信息的解决方法
- Parametric Diagrams
- 说说 Redis pipeline
- 中国各省市元宇宙政策汇编
- centos挂载和取消挂载
- Podman 保姆级使用教程,太顶了!
- 自考第一阶段读书有感