qt 解析json数组和数组中的对象

本文介绍了如何使用QT库解析包含数组和对象的JSON文件,通过具体的代码展示了解析过程,详细讲解了遇到的问题和解决方案。

一、问题
json文件中的内容

[
	{
		"num": "1111",
		"id": "2222",
		"commsyncword": "3333",
		"period" :
		{
		  "start": "4444",
		  "end": "5555"
		}
	},
	
	{
		"num": "1112",
		"id": "2223",
		"commsyncword": "3334",
		"period" :
		{
		  "start": "4445",
		  "end": "5556"
		}
	}
]

二、解析过程
直接代码展示:

{
    QFile file( "D:/test.json");
	if (!file.open(QIODevice::ReadWrite)) {
		qDebug() << "文件打开失败!\n";
		exit(1);
	}
	qDebug() << "文件打开成功\n";

	QJsonParseError jsonParserError;
	QJsonDocument   jsonDocument =	QJsonDocument::fromJson(file.readAll(), &jsonParserError);

	if (!jsonDocument.isNull() &&jsonParserError.error == QJsonParseError::NoError)
	{
		qDebug() << "文件解析成功\n";
		if (jsonDocument.isArray())
		{ 
			QJsonArray array = jsonDocument.array();  // 转数组 
			int nSize = array.size();
			for (int i = 0; i < nSize; ++i)
			{
				qDebug() << array.at(i).toObject().value("num").toString();
				qDebug() << array.at(i).toObject().value("id").toString();
				qDebug() << array.at(i).toObject().value("commsyncword").toString();
				if (array.at(i).toObject().value("period").isObject())
				{						
					QJsonObject jsonObject = array.at(i).toObject().value("period").toObject();
					qDebug() << "start is " << jsonObject.value("start").toString().toInt();
					qDebug() << "end is " << jsonObject.value("end").toString().toInt();
				}

			}
		}
	}

	file.close();
	qDebug() << "按任意键退出程序\n";
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值