系统定制开发Qt读取Json文件(含源码+注释)

文章目录

一、示例Json文件内容

系统定制开发下方为本文所使用的Json系统定制开发文件的内容,系统定制开发其中包含字符串、数值、布尔、null、对象、数组、系统定制开发组合类型等(系统定制开发读取方式在本文第三节)

{	"str": "strVal",	"number": 88,	"bool": true,	"null": null,	"object": {		"key1": "Val1",		"key2": "Val2",		"key3": "Val3"	},	"array": [		"elem1",		"elem2",		"elem3",		"elem4"	],	"combination": [{			"name": "Google",			"url": "http://www.google.com"		},		{			"name": "Baidu",			"url": "http://www.baidu.com"		},		{			"name": "SoSo",			"url": "http://www.SoSo.com"		}	]}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

二、Json系统定制开发读取会使用的类(介绍读取所使用的类在本文中的作用,个人理解)

  1. QJsonParseError:用于报告JSON解析期间的错误;当JSON串格式有问题时会存储错误
  2. QJsonDocument:提供了一种读取和写入JSON文档的方法;
  3. QJsonObject:用于读取对象类型数据和接收从QJsonDocument对象中获取的QJsonObject对象
  4. QJsonArray:用于读取数组类型数据

三、Json文件的读取

3.1 读取Json串到中

	QFile file("./jsonTest.json");	//创建QFile对象,并指定json文件路径	//打开json文件并判断(不成功则返回0)    if(!file.open(QIODevice::ReadOnly))        return 0;    //将文件内容读取到数组中    QByteArray data(file.readAll());    file.close();	//关闭文件
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

3.2 读取Json串到QJsonDocument,并使用QJsonParseError判断是否有错

	QJsonParseError jError;	//创建QJsonParseError对象	//使用QJsonDocument的fromJson函数读取json串,并将QJsonParseError对象传入获取错误值    QJsonDocument jDoc = QJsonDocument::fromJson(data, &jError);	    //判断QJsonParseError对象获取的error是否包含错误,包含则返回0    if(jError.error != QJsonParseError::NoError)        return 0;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

3.3 获取,并读取Json串中各类型的值

获取QJsonObject对象

	QJsonObject jObj = jDoc.object();
  • 1

获取常规类型的值

	//读取字符串    QString strVal = jObj["str"].toString();    //读取数值(对应的数值转换成对应的类型)    int numVal = jObj["number"].toInt();    //读取逻辑值    bool boolVal = jObj["bool"].toBool();    //读取空值(因其没有对应的to类型函数,可使用下方类型接收或isNull()函数判断)    QVariant nullVal = jObj["null"].toVariant();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

获取对象类型及其中的值

    //对象类型需要使用新的QJsonObject对象存放,然后使用新的QJsonObject获取其中值    QJsonObject jObj2 = jObj["object"].toObject();    //获取jObj2中指定键的值(值对应的类型直接使用对应函数转)    QString key1Val = jObj2["key1"].toString();
  • 1
  • 2
  • 3
  • 4

获取数组类型及其中的值

    //对象类型需要使用QJsonArray对象存放    QJsonArray jArr = jObj["array"].toArray();    //获取jArr中指定下标的值(该值可通过如下方式接收或使用QJsonValue的对象接收)    QString arr1Val = jArr.at(0).toString();
  • 1
  • 2
  • 3
  • 4

读取组合类型的值

    //组合对象第一层类型为数组,需要使用QJsonArray对象存放    QJsonArray jArr2 = jObj["combination"].toArray();    //数组中存放的对象,使用QJsonObject接收    QJsonObject jObj3 = jArr2.at(0).toObject();    //获取对象中的指定键的值    QString name = jObj3["name"].toString();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

总结

建议学习前先了解一下,其次为在编写代码的过程中需要细心,类似的对象名容易混淆

相关文章



友情提示——哪里看不懂可私哦,让我们一起互相进步吧
(创作不易,请留下一个免费的赞叭 谢谢 ^o^/)

注:文章为作者编程过程中所遇到的问题和总结,内容仅供参考,若有错误欢迎指出。
注:如有侵权,请联系作者删除

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发