Qt 操作Json格式文件(创建、插入、解析、修改、删除

收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
img
img

如果你需要这些资料,可以戳这里获取

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

// 判断是否是Array类型
if (colorValue.type() == QJsonValue::Array) {
// 转换为QJsonArray类型
QJsonArray colorArray = colorValue.toArray();

for (int i = 0; i < colorArray.size(); i++) {
	QJsonValue color = colorArray.at(i);
	qDebug() << "color = " << color.toString();
}

}

7. 解析数组中的对象 [ { } ]  
 也就是解析下图内容:  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210703160103999.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NwcF9sZWFybmVy,size_16,color_FFFFFF,t_70#pic_center)  
 解析代码:

 

// 根键获取值
QJsonValue likeValue = rootObj.value(“like”);
// 判断类型是否是数组类型
if (likeValue.type() == QJsonValue::Array) {
// 转换成数组类型
QJsonArray likeArray = likeValue.toArray();
// 遍历数组
for (int i = 0; i < likeArray.count(); i++) {
// 获取数组的第一个元素,类型是QJsonValue
QJsonValue likeValueChild = likeArray.at(i);
// 判断是不是对象类型
if (likeValueChild.type() == QJsonValue::Object) {
// 转换成对象类型
QJsonObject likeObj = likeValueChild.toObject();
// 最后通过value函数就可以获取到值了,解析成功!
QJsonValue gameLikeValue = likeObj.value(“game”);
qDebug() << "game = " << gameLikeValue.toString();
QJsonValue priceLikeValue = likeObj.value(“price”);
qDebug() << "price = " << priceLikeValue.toDouble();
}
}
}

8. 解析 对象 中 对象 { { } }  
 也就是解析下图内容:  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210703160544318.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NwcF9sZWFybmVy,size_16,color_FFFFFF,t_70#pic_center)  
 解析代码:

 

// 根据建获取值
QJsonValue languagesValue = rootObj.value(“languages”);
// 判断是不是对象类型
if (languagesValue.type() == QJsonValue::Object) {
// 转换成对象类型
QJsonObject languagesObj = languagesValue.toObject();
// 根据建获取值
QJsonValue serialOneValue = languagesObj.value(“serialOne”);
// 判断是不是对象类型
if (serialOneValue.type() == QJsonValue::Object) {
// 转换成对象类型
QJsonObject serialOneObj = serialOneValue.toObject();
// 根据建获取值
QJsonValue languageValue = serialOneObj.value(“language”);
// 最后转换成对应类型就解析出来了!
qDebug() << "language = " << languageValue.toString();
QJsonValue gradeValue = serialOneObj.value(“grade”);
qDebug() << "grade = " << gradeValue.toInt();
}

QJsonValue serialTwoValue = languagesObj.value("serialTwo");
if (serialTwoValue.type() == QJsonValue::Object) {
	QJsonObject serialTwoObj = serialTwoValue.toObject();

	QJsonValue languageValue = serialTwoObj.value("language");
	qDebug() << "language = " << languageValue.toString();
	QJsonValue gradeValue = serialTwoObj.value("grade");
	qDebug() << "grade = " << gradeValue.toInt();
}

}



解析运行结果如下:  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210703160930854.png#pic_center)


9. 解析 数组 中 数组 [ [ ] [ ] ]

 **对应上面补充内容的解析操作!**

 也就是解析下图内容:  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/ddd966a652024396b8154f22f2ac4557.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAY3BwX2xlYXJuZXJz,size_17,color_FFFFFF,t_70,g_se,x_16#pic_center)  
 解析代码:

 

// 根键获取值
QJsonValue colorValue = rootObject.value(“color”);
// 判断类型是否是数组类型
if (colorValue.type() == QJsonValue::Array) {
// 转换成数组类型
QJsonArray colorArray = colorValue.toArray();
// 遍历数组
for (int i = 0; i < colorArray.count(); i++) {
// 获取数组的第一个元素,类型是QJsonValue
QJsonValue colorValueChild = colorArray.at(i);
// 判断是不是数组类型
if (colorValueChild.type() == QJsonValue::Array) {
// 转换成数组类型
QJsonArray colorArr = colorValueChild.toArray();

		for (int i = 0; i < colorArr.size(); i++) {
			QJsonValue color = colorArr.at(i);
			qDebug() << "color = " << color.toString();
		}
		
	}
}

}



## 四、修改Json


修改的过程就是:将数据从文件中读取出来,解析成QJsonDocument对象后,在获取跟对象{ },通过跟对象在获取其他的对象{}或者数组[],修改后,再赋值给跟对象{},达到替换效果,也就是修改了,最后再写入文件即可!


1. 读取数据解析成QJsonDocument代码省略,跟上面一样
2. 获取根节点对象

 

// 获取根

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值