当前位置: 首页 > news >正文

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#

http://www.lryc.cn/news/502691.html

相关文章:

  • [小白系列]GPU-nvidia-smi指令
  • 在SQL Server中使用hash join来提高表连接的性能
  • 《Django 5 By Example》阅读笔记:p493-p520
  • 【开源】基于SpringBoot框架的网上订餐系统 (计算机毕业设计)+万字毕业论文 T018
  • 数据湖治理最佳实践
  • 基于php求职招聘系统设计
  • ensp实验-vrrp多网关配置
  • Ajax--实现检测用户名是否存在功能
  • 【代码pycharm】动手学深度学习v2-09 Softmax 回归 + 损失函数 + 图片分类数据集
  • 设计模式:24、访问者模式
  • 基于JAVA的旅游网站系统设计
  • 网络安全产品之认识防火墙
  • nginx反向代理(负载均衡)和tomcat介绍
  • Microsoft Azure 在线技术公开课:生成式 AI 基础知识
  • lnmp+discuz论坛 附实验:搭建discuz论坛
  • 谷粒商城—分布式高级①.md
  • Unity开发配置不足,卡顿崩溃怎么办?
  • 在 Linux 上以 All-in-One 模式安装 kubernetes v1.22.12 kubesphere v3.4.1
  • 网络安全自学是一项需要耐心和恒心的任务
  • Python+OpenCV系列:图像的几何变换
  • 第P1周:Pytorch实现mnist手写数字识别
  • 使用EventLog Analyzer进行Apache日志监控和日志分析
  • PaddleOCR模型ch_PP-OCRv3文本检测模型研究(二)颈部网络
  • 360极速浏览器不支持看PDF
  • 【深度学习】深刻理解ViT
  • 解决vue2中更新列表数据,页面dom没有重新渲染的问题
  • vscode通过ssh连接远程服务器(实习心得)
  • 知识图谱9:知识图谱的展示
  • leetcode 面试经典 150 题:验证回文串
  • 【0363】Postgres内核 从 XLogReaderState readBuf 解析 XLOG Record( 8 )