文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Qt读取Json文件的方法详解(含源码+注释)

2022-11-13 18:39

关注

一、示例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"
		}
	]
}

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

三、Json文件的读取

3.1 读取Json串到QByteArray中

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

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;

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

获取QJsonObject对象

	QJsonObject jObj = jDoc.object();

获取常规类型的值

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

获取对象类型及其中的值

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

获取数组类型及其中的值

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

读取组合类型的值

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

总结

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

到此这篇关于Qt读取Json文件的文章就介绍到这了,更多相关Qt读取Json文件内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

相关文章

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯