当前位置: 首页 > news >正文

垦利网站制作建筑工程证书查询

垦利网站制作,建筑工程证书查询,分销商城源码,学做蛋糕什么网站一.前言: JSON是一种轻量级数据交换格式,常用于客户端和服务端的数据交互,不依赖于编程语言,在很多编程语言中都可以使用JSON,比如C,C,Java,Android,Qt。除了JSON&#x…

一.前言:
JSON是一种轻量级数据交换格式,常用于客户端和服务端的数据交互,不依赖于编程语言,在很多编程语言中都可以使用JSON,比如C,C++,Java,Android,Qt。除了JSON,还有一种数据传输格式XML,相较于XML,JSON更加便于阅读和书写。
JSON 有两种数据格式:JSON对象和JSON数组。被中括号包裹的是JSON数组,被大括号包裹的是JSON对象。

二.JSON数组:
JSON数组的格式:[元素1,元素2,元素3,…]
示例1:元素可以是不同数据类型

[1,2,3.14,"hello world",true,null]

示例2:元素可以是JSON对象或JSON数组

[{"id":123,"name":"tom"},[1,2,3.14,"hello world",true,null]
]

三.JSON对象:
JSON对象的格式:一个或多个键值对组成
示例1:

{"id":123,"name":"tom"
}

示例2:嵌套JSON对象和JSON数组,JSON对象和JSON数组也要使用键值对格式

{"name": "John Doe","age": 30,"address": {"city": "New York","street": "123 Main St"},"phoneNumbers": [{"type": "home","number": "555-1234"},{"type": "work","number": "555-5678"}],"hobbies": ["reading", "painting", "playing guitar"],"isStudent": true
}

小结:JSON数组里可以包含JSON对象或JSON数组,JSON对象里也可以嵌套JSON对象或JSON数组。

四.Qt中JSON的使用:1.生成JSON数据、2.解析JSON数据
在QT5.0版本以后支持对JSON的使用,QT5.0之前需要自己集成第三方库。
1.生成JSON数据
要生成的JSON数据如下:

{"name": "小王","age": 30,"address": {"city": "北京","street": "人民路32号"},"phoneNumbers": [{"number": "999-123456","type": "家"},{"number": "999-654321","type": "公司"}]
}

使用Qt生成上面的JSON数据:

#include <QJsonObject>
#include <QJsonArray>
#include <QJsonDocument>
#include <QDebug>
void MainWindow::writeJSON()
{// 创建最外层的 JSON 对象,里面包含要构建的所有 JSON 数据QJsonObject rootObj;// 插入 name 键值对到 rootObjrootObj.insert("name","小王");// 插入 age 键值对到 rootObjrootObj.insert("age",30);// 创建地址 JSON 对象,里面包含两个键值对QJsonObject addressObj;addressObj.insert("city","北京");addressObj.insert("street","人民路32号");// 插入地址 JSON 对象到 rootObjrootObj.insert("address",addressObj);// 创建电话 JSON 数组,里面包含两个电话 JSON 对象QJsonArray phoneArray;// 创建两个电话 JSON 对象QJsonObject phoneHomeObj;phoneHomeObj.insert("type","家");phoneHomeObj.insert("number","999-123456");QJsonObject phoneWorkObj;phoneWorkObj.insert("type","公司");phoneWorkObj.insert("number","999-654321");// 在电话 JSON 数组中添加两个电话 JSON 对象phoneArray.append(phoneHomeObj);phoneArray.append(phoneWorkObj);// 插入电话 JSON 数组到 rootObjrootObj.insert("phoneNumbers",phoneArray);// 将 rootObj JSON对象转换为 JSON 数据格式QJsonDocument doc(rootObj);QByteArray json = doc.toJson();// 打印qDebug()<<QString::fromUtf8(json);
}

2.解析JSON数据
要解析的JSON数据如下,先将它放在test.json文本文件中:

{"name": "小王","age": 30,"address": {"city": "北京","street": "人民路32号"},"phoneNumbers": [{"number": "999-123456","type": "家"},{"number": "999-654321","type": "公司"}]
}

使用Qt解析上面的JSON数据:

#include <QJsonObject>
#include <QJsonArray>
#include <QJsonDocument>
#include <QDebug>
#include <QFile>
void MainWindow::analyseJSON()
{// 读取文本中的 JSON 数据QFile file("C:\\Users\\A\\Desktop\\temp\\test.json");file.open(QFile::ReadOnly);QByteArray json = file.readAll();file.close();// 将 JSON 数据转换为 QJsonDocument 对象QJsonDocument doc = QJsonDocument::fromJson(json);if(!doc.isObject()){// 不是 JSON 对象:JSON 字符串格式错误或无效qDebug()<<"不是 JSON 对象:JSON 字符串格式错误或无效";return;}// 将 QJsonDocument 对象中的 JSON 数据转换为 JSON 对象QJsonObject obj = doc.object();// 获取 JSON 数据中的所有键QStringList keys = obj.keys();// 遍历键值对for (int i = 0;i<keys.size();++i) {// 获取每一个 keyQString key = keys[i];// 通过 key 获取对应的 valueQJsonValue value = obj.value(key);if(value.isBool()){// 值是一个 boolqDebug()<<key<<":"<<value.toBool();}else if(value.isString()){// 值是一个字符串qDebug()<<key<<":"<<value.toString();}else if(value.isDouble()){// 值是一个 double 或者 int(double 和 int 都用 isDouble)qDebug()<<key<<":"<<value.toInt();}else if(value.isObject()){// 值是一个 JSON 对象qDebug()<<key<<":";// 这里偷个懒,不再像上面那样循环获取值了,而是直接通过已知的键去获取值QJsonObject addressObj = value.toObject();QString city = addressObj["city"].toString();QString street = addressObj["street"].toString();qDebug()<<"  "<<"city:"<<city;qDebug()<<"  "<<"street:"<<street;}else if (value.isArray()){// 值是一个 JSON 数组qDebug()<<key<<":";QJsonArray phoneArray = value.toArray();for (int i = 0;i<phoneArray.size();++i) {// 遍历 JSON 数组中的每一个 JSON 对象QJsonObject phoneObj = phoneArray[i].toObject();QString number = phoneObj["number"].toString();QString type = phoneObj["type"].toString();qDebug()<<"  "<<"number:"<<number;qDebug()<<"  "<<"type:"<<type;}}}
}
http://www.yayakq.cn/news/898998/

相关文章:

  • 上海城乡建设管理局网站买一个app软件要多少钱
  • 域名查询站长之家公司网页设计的公司
  • 购买域名之后怎么做网站知乎关键词搜索
  • 网站页面宽度消防网站模板
  • 武进网站建设代理商中天建设集团有限公司排名
  • 建设公司董事长致辞网站范文最近的新闻大事
  • 新奇网站建设wordpress换主题 无法打开
  • 最专业的医疗网站建设wordpress可以干什么
  • 昆明网站开发培训机构贵阳网站开发zu97
  • pageadmin自助建站wordpress怎么做淘客网站
  • 网站及新媒体帐号内容建设网站上传不了图片是什么原因
  • 网站域名怎么免费获取找别人做网站怎么防止后门
  • 网站建设工程师职责说明济南专业的设计网站
  • 企业网站建设方案及报价公司做网站需要什么内容
  • 杭州西湖区网站建设wordpress cx udy主题
  • 济南手机网站制作昆明小程序开发联系方式
  • 新建的网站怎么做seo优化做高档衣服的网站
  • 班级的网站设计怎么做考研网站做刷词
  • 建设网站前需考虑哪些问题wordpress 网站变慢
  • 自己怎么做网站视频赚钱网络公司 建站 官方网站
  • 网站如何设置广告江西省建设工程安全质量监督管理局网站
  • 网站建设核心系统无法运行电脑wordpress
  • 管理网站开发教程常用的网站开发语言
  • 北京代做网站北京英文网站建设的原则
  • 元芳重庆网站建设华为云免费服务器
  • 黄岩城市建设发展集团网站注册网店需要多少费用
  • 网站结构化数据班级网站开发与设计
  • 丽水网站开发网站开发过程可分为
  • 做视频网站有什么wordpress建手机版目录6
  • 国外做名片的网站搜索引擎优化理解