以实战例子讲述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教程-实战篇相关推荐

  1. 下载 嵌入式qt实战教程pdf_Qt之JSON教程-实战篇

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

  2. json qbytearray 串 转_Qt之JSON教程-使用篇

    以故事方式来学习如何使用Qt接口来操作JSON数据. JSON三兄弟 老大哥QJsonValue主要用于封装JSON值,类似于QVariant. 它能够存储以下值:与QVariant互转 QJsonV ...

  3. JSON解析实战篇:JSON数组中含JSON数组

    少年最好的地方就是:嘴里说着要放弃,心里却都憋着一口气. 前言 关于JSON和本文中所用的Fastjson介绍,可以查看我的这两篇博客: JSON简介:什么是JSON -> https://bl ...

  4. Susy 2 教程 — 实战篇

    Susy 2 教程 - 入门篇 Susy 2 教程 - Shorhand 篇 在前面介绍了Susy2的配置(config)和简写(shorthand)之后,给大家介绍一下Tookit中几个常用的宏,然 ...

  5. 土人系列AS入门教程--实战篇

    这次我们要进入实战,我要教你们做一个很简单的游戏,下面的每句代码我都会加上注释,如果你看过上面的教程,我想要全部理解应该不会困难. 现在让我们开始吧.这个游戏是我初学的时候按教程做的一个游戏,所以印象 ...

  6. python 读取鼠标选中文本_木辛老师的编程课堂:Python和Qt之页面布局实战篇(一)...

    通过前几节课的学习,我们已经基本上掌握了使用Qt Designer完成简单的布局管理.通过这些知识的学习,我们算是对PyQt进行了初步的了解,也算是入门了! 但是仅仅掌握这些知识还是远远不够的: 高深 ...

  7. Systemd 入门教程:实战篇

    Systemd 入门教程:实战篇 原文出处: 阮一峰(@ruanyf)   http://blog.jobbole.com/98671/?utm_source=blog.jobbole.com& ...

  8. [知识图谱实战篇] 三.Python提取JSON数据、HTML+D3构建基本可视化布局

    前面作者讲解了很多知识图谱原理知识,包括知识图谱相关技术.Neo4j绘制关系图谱等,但仍缺少一个系统全面的实例.为了加深自己对知识图谱构建的认识,为后续创建贵州旅游知识图谱打下基础,作者深入学习了张宏 ...

  9. [知识图谱实战篇] 二.Json+Seaborn可视化展示电影实体

    前面作者讲解了很多知识图谱原理知识,包括知识图谱相关技术.Neo4j绘制关系图谱等,但仍缺少一个系统全面的实例.为了加深自己对知识图谱构建的认识,为后续创建贵州旅游知识图谱打下基础,作者深入学习了张宏 ...

最新文章

  1. php中soap的使用以及wsdl的生成
  2. Understanding Clouds from Satellite Images的kernel调研+肉眼识别每种云朵示例
  3. 来来来,送开发板了。
  4. 基于node.js及express实现中间件,实现post、get
  5. django-orm-查询基本操作
  6. 奥迪推出大型自动驾驶数据集A2D2
  7. 仓库保管工计算机试题,仓库保管工中级试卷答案.doc
  8. Android仿人人客户端(v5.7.1)——对从服务器端(网络)获取的图片进行本地双缓存处理(编码实现)...
  9. vue进阶学习组件03
  10. Go语言核心36讲(Go语言实战与应用十九)--学习笔记
  11. detectron2训练自己的数据集_从零教你训练自己的数据集实现汽车标志识别,汽车品牌识别源码
  12. java struts2教程_Struts2教程--第一章 搭建Struts2开发环境
  13. 条码软件如何修改条码标签的字体格式
  14. 2021-03-26 大数据技术对企业管理的影响和应用前景分析
  15. 时序动作检测《BMN: Boundary-Matching Network for Temporal Action Proposal Generation》
  16. STM32学习100步之第四十二步——触摸按键驱动程序
  17. 在html中字怎么修改位置,css怎么设置字体位置?
  18. python好学么零基础_python编程好学吗 自学行吗
  19. 3d打印机品牌排行榜揭晓,stratasys公司名列前茅
  20. 欲登千层楼,又何惧寒风

热门文章

  1. 【Python】Python获取当前是否是股市交易日
  2. YYKit系列之——YYCache使用
  3. [Vue warn]: Property or method “throttle“ is not defined on the instance but referenced during rende
  4. hadoop集群web页面无法显示节点信息的解决方法
  5. Parametric Diagrams
  6. 说说 Redis pipeline
  7. 中国各省市元宇宙政策汇编
  8. centos挂载和取消挂载
  9. Podman 保姆级使用教程,太顶了!
  10. 自考第一阶段读书有感