首页 黑马程序员C语言教程: CC 培训专家:教你快速搞定Qt下的Json文件使用

黑马程序员C语言教程: CC 培训专家:教你快速搞定Qt下的Json文件使用

举报
开通vip

黑马程序员C语言教程: CC 培训专家:教你快速搞定Qt下的Json文件使用传智播客C/C++培训专家:教你快速搞定Qt下的Json文件使用 JSON的全称是”JavaScript Object Notation”,意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式。JSON 解析器和 JSON 库支持许多不同的编程语言,目前非常多的编程语言都支持JSON。接下来传智播客C/C++培训专家为大家介绍一下Qt下的Json的使用。 Json的两种结构 JSON有两种表示结构,对象和数组。 ● 对象结构以”{”大括号开始,以”}”大括号结束。中间部分由0或...

黑马程序员C语言教程: CC  培训专家:教你快速搞定Qt下的Json文件使用
传智播客C/C++培训专家:教你快速搞定Qt下的Json文件使用 JSON的全称是”JavaScript Object Notation”,意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式。JSON 解析器和 JSON 库支持许多不同的编程语言,目前非常多的编程语言都支持JSON。接下来传智播客C/C++培训专家为大家介绍一下Qt下的Json的使用。 Json的两种结构 JSON有两种表示结构,对象和数组。 ● 对象结构以”{”大括号开始,以”}”大括号结束。中间部分由0或多个以”,”分隔的”key(关键字)/value(值)”对构成,关键字和值之间以”:”分隔,语法结构如代码。 { key1:value1, key2:value2, ... } 其中关键字是字符串,而值可以是字符串,数值,true,false,null,对象或数组。 ● 数组结构以”[”开始,”]”结束。中间由0或多个以”,”分隔的值列表组成,语法结构如代码。 [ true, 123, “hello,world” ] 数组中的元素值类型可以相同也可不同。 Json格式的文件在使用的时候是十分灵活的,其中数组和对象之间也是可以相互嵌套的,大家可以按照自己的实际需求来定义成对应的格式。例如: [ { "firstName":"John" , "lastName":"Doe" }, { "firstName":"Anna" , "lastName":"Smith" }, { "firstName":"Peter" , "lastName": "Jones" } ] Qt5中JSON的生成与解析 Qt5 新增加了处理 JSON 的类,与 XML 类库类似,均以 QJson 开头,在 QtCore 模块中,不需要额外引入其它模块。Qt5 新增加六个相关类: 类 类说明 QJsonDocument 读写 JSON 文档 QJsonObject 封装 JSON 对象 QJsonArray 封装 JSON 数组 QJsonValue 封装JSON 值 QJsonObject::iterator 用于遍历 QJsonObject 的 STL 风格的非 const 遍历器 QJsonParseError 报告 JSON 处理过程中出现的错误     需要大家着重掌握的类为前四个。 QJsonDocument 该Json文档类主要是把json格式的数据解析为Qt中的Json文档对象,所有我们在使用该类之前,需要先把数据准备好: ? 解析Json 1. 使用QFile对象加载指定的Json格式文件 a) QFile file(”D:\\myjson.json”); b) file.open(QIODevice::ReadWrite); 2. 通过QFile类中的read方法将文件数据读到内存 a) QByteArray json = file. readAll(); 3. QJsonDocument::fromJson() 可以由 QByteArray 对象构造一QJsonDocument 对象,用于我们的读写操作 a) QJsonDocument jsDoc; b) jsDoc = QJsonDocument::fromJson(json.toUtf8()); QJsonObject ? 生成json对象 因为json对象为键值对,所以我们可以使用QJsonObject类的insert方法,向该类对象中插入数据。 1. 创建空的QJsonObject对象 a) QJsonObject obj; 2. 使用insert方法向空对象中插入数据 a) obj.insert(“name”, “Jack”); b) obj.insert(“age”, 26); c) obj.insert(“isboy”, true); ? 解析json对象 1. 首先需要先得到一个QJsonDocument对象,然后判断该对象是否是一个json对象,使用isObject()方法 2. 使用QJsonDocument类的object()方法可以将json文档对象转换为Json对象。 3. 可以通过QJsonObject对象的key值得到其value值,访问方式为QJsonValue value = obj[key] 4. 使用QJsonValue类的成员方法将value值转换为实际的数据类型。 QJsonDocument parse_doucment; parse_doucment = QJsonDocument::fromJson(byte_array); if(parse_doucment.isObject())  {  QJsonObject obj = parse_doucment.object(); if(obj.contains("name"))  {  QJsonValue name_value = obj["name"]; if(name_value.isString()) { QString name = name_value.toString(); } } QJsonArray ? 生成Json 1. 创建Json数组: a) QJsonArray json; 2. 使用QJsonArray类的insert方法插入数据: a) json.insert(0, QString("Qt")); b) json.insert(1, QString("version")); c) json.insert(2, true); 3. 创建Json文档对象: a) QJsonDocument document; 4. 将初始化完成的json数组对象设置给Json文档对象 a) document.setArray(json); 5. 将json文档对象转换为QByteArray对象 a) QByteArray byte_array = document.toJson(); 生成的文件格式:["Qt","version",true] ? 解析Json 1. 首先需要先得到一个QJsonDocument对象,然后判断该对象是否是一个json数组,使用isArray()方法。 2. 使用QJsonDocument类的array()方法可以将json文档对象转换为Json对象。 3. 可以通过QJsonArray对象遍历得到其中的每个value值,访问方式与遍历普通数组的方式相同。 4. 使用QJsonValue类的成员方法将value值转换为实际的数据类型。 QJsonDocument parse_doucment; parse_doucment = QJsonDocument::fromJson(byte_array); if(parse_doucment.isArray())  {  QJsonArray array = parse_doucment.array(); int size = array.size(); for(int i=0; i
本文档为【黑马程序员C语言教程: CC 培训专家:教你快速搞定Qt下的Json文件使用】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_321575
暂无简介~
格式:doc
大小:31KB
软件:Word
页数:0
分类:互联网
上传时间:2019-09-12
浏览量:13