QT JSON文件解析

参考博客

https://blog.csdn.net/cpp_learner/article/details/118421096

1 打开文件,读取全部内容

复制代码
QFile file("../Json/js.json");
if (!file.open(QFile::ReadOnly | QFile::Text)) {
	qDebug() << "can't open error!";
	return;
}

// 读取文件的全部内容
QTextStream stream(&file);
stream.setCodec("UTF-8");		// 设置读取编码是UTF8
QString str = stream.readAll();

file.close();

2 将字符串解析成QJsonDocument对象

复制代码
// QJsonParseError类用于在JSON解析期间报告错误。
QJsonParseError jsonError;
// 将json解析为UTF-8编码的json文档,并从中创建一个QJsonDocument。
// 如果解析成功,返回QJsonDocument对象,否则返回null
QJsonDocument doc = QJsonDocument::fromJson(str.toUtf8(), &jsonError);
// 判断是否解析失败
if (jsonError.error != QJsonParseError::NoError && !doc.isNull()) {
	qDebug() << "Json格式错误!" << jsonError.error;
	return;
}

3 获取JSON根{}对象

复制代码
QJsonObject rootObj = doc.object();

4 根据键获取值

复制代码
// 根据键获取值
QJsonValue nameValue = rootObj.value("name");
qDebug() << "name = " << nameValue.toString();


QJsonValue ageValue = rootObj.value("age");
qDebug() << "age = " << ageValue.toInt();
// 解析 bool类型
QJsonValue vipValue = rootObj.value("vip");
qDebug() << "vip = " << vipValue.toBool();


// 解析 null类型
QJsonValue addressValue = rootObj.value("address");
if (addressValue.type() == QJsonValue::Null) {
	qDebug() << "address = " << "null";
}

5 解析对象 { }

复制代码
QJsonValue interestValue = rootObj.value("interest");
// 判断是否是object类型
if (interestValue.type() == QJsonValue::Object) {
	// 转换为QJsonObject类型
	QJsonObject interestObj = interestValue.toObject();

	QJsonValue basketballValue = interestObj.value("basketball");
	qDebug() << "basketball = " << basketballValue.toString();
	QJsonValue badmintonValue = interestObj.value("badminton");
	qDebug() << "badminton = " << badmintonValue.toString();
}

QML解析Json文件来更换语言

自己写一个map 重载translate

https://blog.csdn.net/tanxuan231/article/details/125442789#

相关推荐
asdfg12589635 分钟前
小程序开发中的JS和Go的对比及用途
开发语言·javascript·golang
FL162386312910 分钟前
基于yolo11实现的车辆实时交通流量进出统计与速度测量系统python源码+演示视频
开发语言·python·音视频
华如锦20 分钟前
四:从零搭建一个RAG
java·开发语言·人工智能·python·机器学习·spring cloud·计算机视觉
2501_9418752825 分钟前
在东京复杂分布式系统中构建统一可观测性平台的工程设计实践与演进经验总结
c++·算法·github
每天吃饭的羊33 分钟前
媒体查询
开发语言·前端·javascript
Jacen.L35 分钟前
SIGABRT (6) 中止信号详解
c++
北海有初拥42 分钟前
Python基础语法万字详解
java·开发语言·python
阿里嘎多学长1 小时前
2026-01-02 GitHub 热点项目精选
开发语言·程序员·github·代码托管
王老师青少年编程1 小时前
信奥赛C++提高组csp-s之并查集(案例实践)2
数据结构·c++·并查集·csp·信奥赛·csp-s·提高组
天远云服1 小时前
Go语言高并发实战:集成天远手机号码归属地核验API打造高性能风控中台
大数据·开发语言·后端·golang