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

【JSON文件解析】JSON文件

文章目录

    • 概要:本期主要介绍Qt解析JSON数据格式文件的方式。
    • 一、JSON数据格式
      • 1.JSON类似于XML,在JSON文件中,==有且只有一个根节点
      • 2.JSON有两种主流包含型构造字符:{对象}、[数组]
      • 3.JSON的值主要包括:对象、数组、数字、字符串以及三种字面值(ture、fasle、null)
      • 4.JOSN中的对象和数组是可以互相作为对方的子元素,形成复杂的嵌套结构,可以表达出完整的流程。
    • 二、Qt中对于JSON数据格式的处理
      • 1.QJsonDocument
      • 2.QJsonObject
      • 3.QJsonArray
      • 4.QJsonValue
    • 三、Qt解析JSON数据格式
      • 简述实现步骤:
        • 1.将json文件转为QJsonDocument对象
        • 2.通过isObject或者isArray来获取QJsonObejct对象或者QJsonArray对象
        • 3.QJsonObject对象类似map容器,通过键值对存储。可以通过获取所有key,遍历获取所有值.值的类型是QJsonValue,可以转成对象、数组、数字、字符串、布尔。
        • 4.QJsonArray对象类似数组,可以直接通过下标访问,值的类型是QJsonValue,可以转成对象、数组、数字、字符串、布尔。
    • 结尾

概要:本期主要介绍Qt解析JSON数据格式文件的方式。

一、JSON数据格式

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。易于人阅读和编写,可以在多种语言之间进行数据交换。同时也易于机器解析和生成。相对于Xml数据格式,有更好的可读性,并且在网络传输中有更好的传输效率

1.JSON类似于XML,在JSON文件中,==有且只有一个根节点

2.JSON有两种主流包含型构造字符:{对象}、[数组]

3.JSON的值主要包括:对象、数组、数字、字符串以及三种字面值(ture、fasle、null)

4.JOSN中的对象和数组是可以互相作为对方的子元素,形成复杂的嵌套结构,可以表达出完整的流程。

二、Qt中对于JSON数据格式的处理

Qt5之后,新增了对JSON数据格式的解析类:QJsonDocument、QJsonObject、QJsonArrary、QJsonValue
在这里插入图片描述

1.QJsonDocument

JSON文档类。
JsonFormat
{
“Array”: [
true,
999,
“string”
],
“Key”: “Value”,
“null”: null
}

2.QJsonObject

JSON的对象类,由键值对组成,也就是QString和QJsonValue组成。

3.QJsonArray

JSON的数组类,由一系列的JSON的值(QJsonValue)组成

4.QJsonValue

JSON的值。可以是bool、数字、字符串、数组、对象。

三、Qt解析JSON数据格式

这里仅解析简单的不含嵌套结构的json文件,因为json文件和xml文件一样,如果不知道其内部的构造结构,解析出来比较麻烦,但是,如果你清楚其内部结构,就可以通过下述解析方法,轻松地解析出想要的数据。

简述实现步骤:

1.将json文件转为QJsonDocument对象

2.通过isObject或者isArray来获取QJsonObejct对象或者QJsonArray对象

3.QJsonObject对象类似map容器,通过键值对存储。可以通过获取所有key,遍历获取所有值.值的类型是QJsonValue,可以转成对象、数组、数字、字符串、布尔。

4.QJsonArray对象类似数组,可以直接通过下标访问,值的类型是QJsonValue,可以转成对象、数组、数字、字符串、布尔。

QVector<QString> JsonOperate::ParseJsonFile(QString _path)
{QVector<QString> _vec ;_vec.clear();QDir _dir(_path);QFile _file(_dir.absoluteFilePath(_path));//创建文件对象if(!_file.exists()){qDebug()<<QString::fromLocal8Bit("不存在该文件!")<<endl;return _vec;}if(!_file.open(QIODevice::ReadOnly)){qDebug()<<QString::fromLocal8Bit("文件打开失败!")<<endl;return _vec;}QByteArray _byte = _file.readAll();QJsonParseError _error;QJsonDocument _doc = QJsonDocument::fromJson(_byte,&_error);//将json文件中的内容转成json文件对象_file.close();//开始解析QJsonObject _obt;QJsonArray _array;if(_doc.isObject())//根节点是json对象{_obt = _doc.object();//获取对应json对象QStringList _keys = _obt.keys();for(int i = 0;i < _keys.count();i ++)//将每个键值对组成 kes : value 的字符串格式{QString _tempStr = _keys.at(i);_tempStr += ":";_tempStr += _obt.value(_keys[i]).toString();_vec.push_back(_tempStr);}}else{_array = _doc.array();//获取对应json数组for(int i = 0;i < _array.count();i ++){QString _tempStr = _array.at(i).toString();_vec.push_back(_tempStr);}}return _vec;
}

结尾

上面的解析方式仅适用于Qt5,如果是只使用C++的话,可以使用GitHub上jsoncpp库来解析JSON文件,用法也很简单:)

相关文章:

【JSON文件解析】JSON文件

文章目录概要&#xff1a;本期主要介绍Qt解析JSON数据格式文件的方式。一、JSON数据格式1.JSON类似于XML&#xff0c;在JSON文件中&#xff0c;有且只有一个根节点2.JSON有两种主流包含型构造字符&#xff1a;{对象}、[数组]3.JSON的值主要包括&#xff1a;对象、数组、数字、字…...

OpenGL超级宝典学习笔记:纹理

前言 本篇在讲什么 本篇章记录对OpenGL中纹理使用的学习 本篇适合什么 适合初学OpenGL的小白 本篇需要什么 对C语法有简单认知 对OpenGL有简单认知 最好是有OpenGL超级宝典蓝宝书 依赖Visual Studio编辑器 本篇的特色 具有全流程的图文教学 重实践&#xff0c;轻理…...

主辅助服务市场出清模型研究【旋转备用】(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5;&#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密…...

不用费劲,这5款效率工具为你解决学习工作烦恼

今天我要向大家推荐5款超级好用的效率软件&#xff0c;无论是在学习还是办公中都能够极大地提高效率。这些软件可以帮助你解决许多问题&#xff0c;而且每个都是真正的神器。 1.键盘仿真鼠标——NeatMouse NeatMouse 是一个小型的工具能够使用鼠标光标控制指针。当你的鼠标不…...

PostgreSQL 数据库大小写规则

PostgreSQL 数据库对大小写的处理规则如下&#xff1a; 严格区分大小写默认把所有 SQL 语句都转换成小写再执行加双引号的 SQL 语句除外 如果想要成功执行名称中带有大写字母的对象&#xff0c;则需要把对象名称加上双引号。 验证如下&#xff1a; 想要创建数据库 IZone&…...

【springmvc】执行流程

SpringMVC执行流程 原理图 1、SpringMVC常用组件 DispatcherServlet&#xff1a;前端控制器&#xff0c;不需要工程师开发&#xff0c;由框架提供 作用&#xff1a;统一处理请求和响应&#xff0c;整个流程控制的中心&#xff0c;由它调用其它组件处理用户的请求 HandlerMa…...

什么是AIGC?

目录前言一、什么是AIGC&#xff1f;1、什么是PGC&#xff1f;2、什么是UGC&#xff1f;3、什么是PUCG&#xff1f;4、什么是AIGC&#xff1f;二、总结前言 很明显&#xff0c;ChatGPT的爆火&#xff0c;带动了AIGC&#xff08;AI-Generated Content&#xff09;概念的火热。 …...

【深度强化学习】(2) Double DQN 模型解析,附Pytorch完整代码

大家好&#xff0c;今天和大家分享一个深度强化学习算法 DQN 的改进版 Double DQN&#xff0c;并基于 OpenAI 的 gym 环境库完成一个小游戏&#xff0c;完整代码可以从我的 GitHub 中获得&#xff1a; https://github.com/LiSir-HIT/Reinforcement-Learning/tree/main/Model 1…...

【正则表达式】正则表达式语法规则

正则表达式语法规则1.普通字符 字符描述[ABC]匹配 […] 中的所有字符[^ABC]匹配除了 […] 中字符的所有字符[A-Z][A-Z] 表示一个区间&#xff0c;匹配所有大写字母&#xff0c;[a-z] 表示所有小写字母.匹配除换行符以外的任意字符[\s\S]匹配所有。\s 是匹配所有空白符&#xf…...

1636_isatty函数的功能

全部学习汇总&#xff1a; GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 前面刚刚看完了一个函数和三个文件指针&#xff0c;一行代码懂了半行。但是继续分析我之前看到的代码还是遇到了困难&#xff0c;因为之前自己对于UNIX的一些基础知…...

基于Stackelberg博弈的光伏用户群优化定价模型(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

EXCEL职业版本(3)

Excel职业版本&#xff08;3&#xff09; 公式与函数 运算符 算数运算符 关系运算符 地址的引用 相对引用&#xff1a;你变它就变&#xff0c;如影随形 A2&#xff1a;A5 绝对引用&#xff1a;以不变应万变 $A$2 混合引用&#xff1a;识时务者为俊杰&#xff0c;根据时…...

查找Pycharm跑代码下载模型存放位置以及有关模型下载小技巧(model_name_or_path参数)

目录一、前言二、发现问题三、删除这些模型方法一&#xff1a;直接删除注意方法二&#xff1a;代码删除一、前言 当服务器连不上&#xff0c;只能在本地跑代码时需要使用***预训练语言模型进行处理 免不了需要把模型下载到本地 时间一长就会发现C盘容量不够 二、发现问题 正…...

JS学习笔记day04

今日内容 零、 复习昨日 一、事件 二、DOM操作 三、案例 零、 复习昨日 js 脚本语言,弱类型 引入方案: 3种 js的内容: 语法dombom 语法 变量 var 数据类型 引用类型 - 对象,JSON {key:value,key:value} 数组 var arr new Array();var arr [1,2];下标取值赋值pop() s…...

异步控制流程 遍历篇

文章目录基础方法onlyOnce 只执行一次&#xff0c;第二次报错once 只执行一次&#xff0c;第二次无效iteratorSymbol 判断是否具有迭代器并返回迭代器arrayEach 普通数组遍历baseEach 对象类型遍历symbolEach 具有迭代器类型遍历异步遍历each异步控制流程的目的&#xff1a; 对…...

ICASSP 2023论文模型开源|语音分离Mossformer

人类能在复杂的多人说话环境中轻易地分离干扰声音&#xff0c;选择性聆听感兴趣的主讲人说话。但这对机器却不容易&#xff0c;如何构建一个能够媲美人类听觉系统的自动化系统颇具挑战性。 本文将详细解读ICASSP2023本届会议收录的单通道语音分离模型Mossformer论文&#xff0…...

vs2019 更改工程项目名称

本地 解决方案所在的位置为&#xff1a;D:\Projcet 解决方案名称&#xff1a;hello.sln 位置&#xff1a;D:\Projcet\hello.sln 工程项目名称&#xff1a;test 位置&#xff1a;D:\Projcet\test (文件夹中包含头文件&#xff0c;源文件) 工程包含的文件&#xff1a; fun.h …...

FusionCompute安装和配置步骤

1. 先去华为官网下载FusionCompute的镜像 下载地址&#xff1a;https://support.huawei.com/enterprise/zh/distributed-storage/fusioncompute-pid-8576912/software/251713663?idAbsPathfixnode01%7C22658044%7C7919788%7C9856606%7C21462752%7C8576912 下载后放在D盘中&am…...

makefile 参数和基本使用

make 常用选项make[-f file] [options] [target]make 默认在当前目录中查找GUNmakefile、makefile 及 Makefile 文件作为make的输入文件-f 指定文件作为输入文件-v 显示版本号-n 只输出命令不执行&#xff0c; 一般作为测试-s 执行命令不显示命令&#xff0c;-w 显示执行前和执…...

golang 占位符还傻傻分不清?

xdm &#xff0c;写 C/C 语言的时候有格式控制符&#xff0c;例如 %s , %d , %c , %p 等等 在写 golang 的时候&#xff0c;也是有对应的格式控制符&#xff0c;也叫做占位符&#xff0c;写这个占位符&#xff0c;需要有对应的数据与之对应&#xff0c;不能瞎搞 基本常见常用…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段&#xff1a; 构建阶段&#xff08;Build Stage&#xff09;&#xff1a…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

docker详细操作--未完待续

docker介绍 docker官网: Docker&#xff1a;加速容器应用程序开发 harbor官网&#xff1a;Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台&#xff0c;用于将应用程序及其依赖项&#xff08;如库、运行时环…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

前端导出带有合并单元格的列表

// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码&#xff0c;专为学校招生场景量身打造&#xff0c;功能实用且操作便捷。 从技术架构来看&#xff0c;ThinkPHP提供稳定可靠的后台服务&#xff0c;FastAdmin加速开发流程&#xff0c;UniApp则保障小程序在多端有良好的兼…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…...

自然语言处理——循环神经网络

自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元&#xff08;GRU&#xff09;长短期记忆神经网络&#xff08;LSTM&#xff09…...