【Qt】Qt中QJsonArray类

01. QJsonArray类简介

​ QJsonArray封装了JSON数组。

​ JSON数组是值的链表,可以插入和删除QJsonValue。

​ QJsonArray与QVariantList可以相互转换。QJsonArray可以用size(), insert(), removeAt()进行操作,还可以用标准C++的迭代器模式来迭代其内容。

​ QJsonArray是一个隐式共享的类,只要没有被改变,可以和创建QJsonArray的document共享数据。
通过QJsonDocument可以将一个QJsonArray转换成或转换自一个文本形式的JSON。

Header:	#include <QJsonArray> 
qmake:	QT += core
Since:	Qt 5.0

02. QJsonArray成员方法

QJsonArray()
QJsonArray(std::initializer_list<QJsonValue> args)
QJsonArray(const QJsonArray &other)
QJsonArray(QJsonArray &&other)
~QJsonArray()
void	append(const QJsonValue &value)
QJsonValue	at(int i) const
QJsonArray::iterator	begin()
QJsonArray::const_iterator	begin() const
QJsonArray::const_iterator	constBegin() const
QJsonArray::const_iterator	constEnd() const
bool	contains(const QJsonValue &value) const
int	count() const
bool	empty() const
QJsonArray::iterator	end()
QJsonArray::const_iterator	end() const
QJsonArray::iterator	erase(QJsonArray::iterator it)
QJsonValue	first() const
void	insert(int i, const QJsonValue &value)
QJsonArray::iterator	insert(QJsonArray::iterator before, const QJsonValue &value)
bool	isEmpty() const
QJsonValue	last() const
void	pop_back()
void	pop_front()
void	prepend(const QJsonValue &value)
void	push_back(const QJsonValue &value)
void	push_front(const QJsonValue &value)
void	removeAt(int i)
void	removeFirst()
void	removeLast()
void	replace(int i, const QJsonValue &value)
int	size() const
void	swap(QJsonArray &other)
QJsonValue	takeAt(int i)
QVariantList	toVariantList() const
bool	operator!=(const QJsonArray &other) const
QJsonArray	operator+(const QJsonValue &value) const
QJsonArray &	operator+=(const QJsonValue &value)
QJsonArray &	operator<<(const QJsonValue &value)
QJsonArray &	operator=(const QJsonArray &other)
QJsonArray &	operator=(QJsonArray &&other)
bool	operator==(const QJsonArray &other) const
QJsonValueRef	operator[](int i)
QJsonValue	operator[](int i) const

03. QJsonArray成员方法解析

QJsonArray::QJsonArray(std::initializer_list<QJsonValue> args)
构建一个QJsonArrayQJsonArray::QJsonArray(const QJsonArray &other)void QJsonArray::append(const QJsonValue &value)
在QJsonArray尾部插入valueQJsonValue QJsonArray::at(int i) const
返回QJsonArray中索引为i的QJsonValue值iterator QJsonArray::begin()
const_iterator QJsonArray::begin() const
返回指向数组第一个元素的STL风格迭代器const_iterator QJsonArray::constBegin() const
返回指向数组第一个元素的const STL风格迭代器const_iterator QJsonArray::constEnd() const
返回指向数组最后一个元素后的位置的const STL风格迭代器bool QJsonArray::contains(const QJsonValue &value) const
如果数组中包含value,返回trueint QJsonArray::count() const
返回数组的大小bool QJsonArray::empty() const
如果数组为空,返回trueconst_iterator QJsonArray::end() const
返回指向数组最后一个元素后的位置的STL风格迭代器iterator QJsonArray::erase(iterator it)
删除迭代器it指向的元素,返回指向下一个元素的迭代器QJsonValue QJsonArray::first() const
返回数组中的第一个值[static] QJsonArray QJsonArray::fromStringList(const QStringList &list)
将一个字符串链表list转换为QJsonArray[static] QJsonArray QJsonArray::fromVariantList(const QVariantList &list)
将链表list转换为QJsonArray

04. 参考示例

4.1 Json数组的生成

#include <QCoreApplication>
#include <QJsonValue>
#include <QJsonArray>
#include <QJsonDocument>
#include <QByteArray>
#include <QDebug>#include <iostream>using namespace  std;//Json数组生成   [10, "hello itcast", 3.1415, "Qt"]
int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);//定义一个Json数组QJsonArray array;//向Json数组中追加数据array.append(QJsonValue(10));array.append(QJsonValue("hello itcast"));array.append(QJsonValue(3.1415));array.append(QJsonValue("Qt"));//转为Json文档QJsonDocument doc(array);//转化为字节数组//QByteArray arr = doc.toJson(QJsonDocument::Compact);QByteArray arr = doc.toJson();qDebug().noquote() << arr;qDebug() << arr;cout << arr.toStdString();return a.exec();
}

4.2 Json数组生成和解析

#include <QCoreApplication>
#include <QJsonValue>
#include <QJsonDocument>
#include <QJsonArray>
#include <QJsonObject>
#include <QJsonParseError>#include <QDebug>//Json数组生成和解析
int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);//[13, "itcast", 3.1415, true]//定义Json数组对象QJsonArray array;array.append(13);array.append("itcast");array.append(3.1415);array.append(true);//Json文档QJsonDocument doc(array);//转化为字节QByteArray arr = doc.toJson();qDebug().noquote() << arr;qDebug() << "===============================";QJsonParseError err;QJsonDocument doc1 = QJsonDocument::fromJson(arr, &err);if (doc1.isNull() || err.error != QJsonParseError::NoError){qDebug() <<"Json解析出错";return 1;}//判断是否为Json数组if (!doc1.isArray()){qDebug() << "非法的Json数组";return 1;}//通过文档获取Json数组QJsonArray arr1 = doc1.array();#if 0for (int i = 0; i < arr1.count(); i++){QJsonValue value = arr1.at(i);//根据对应的类型解析switch(value.type()){case QJsonValue::Bool:qDebug() << value.toBool();break;case QJsonValue::Double:qDebug() << value.toDouble();break;case QJsonValue::String:qDebug() << value.toString();break;case QJsonValue::Null:qDebug() << " ";break;case QJsonValue::Array://转化为数组qDebug() << value.toArray();break;case QJsonValue::Object:qDebug() << value.toObject();break;default:qDebug() << "未知类型";}}#elseqDebug() << arr1.at(0).toInt();qDebug() << arr1.at(1).toString();qDebug() << arr1.at(2).toDouble();qDebug() << arr1.at(3).toBool();#endifreturn a.exec();
}

05. 附录

5.1 参考:官方文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/851519.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

企业管理/市场经营/自我管理,500+个经典职场工具 . rar

​500N个实用管理工具包&#xff0c;精选人力资源从业者必备之132项工具、40个管理者实效管理工具、成功自我管理的29个工具、常见的9种营销分析工具等&#xff0c;成功自我管理必备工具。 与班主任联系&#xff0c;即可获得完整资料包&#xff01; 1.PEST分析 2.五力分析 3.…

哈尔滨等保如何做?

哈尔滨等保测评是确保信息系统安全稳定运行的重要一环&#xff0c;它涉及到对业务、资产、安全技术和安全管理的全面调研和评估。本文将详细阐述哈尔滨等保测评的实施步骤和注意事项&#xff0c;帮助读者更好地理解和执行等保测评工作。 首先&#xff0c;我们需要明确等保测评的…

回溯算法练习题(2024/6/10)

1组合 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1&#xff1a; 输入&#xff1a;n 4, k 2 输出&#xff1a; [[2,4],[3,4],[2,3],[1,2],[1,3],[1,4], ] 示例 2&#xff1a; 输入&#xff1a;n …

Hexo+Github搭建个人博客教程

hexo官网&#xff1a;https://hexo.io/zh-cn/ butterfly 主题设置&#xff1a;https://butterfly.js.org/ GitHub地址&#xff1a;https://github.com/jerryc127/hexo-theme-butterfly 基础命令 初始化博客命令&#xff1a;hexo init “文件名” 开启本地服务&#xff08;本…

Docker:Docker容器使用

文章目录 容器与宿主机复制容器环境变量设置镜像的导出和导入 由于篇幅原因&#xff0c;把后续的使用搬到这篇来 容器与宿主机复制 启动一个nginx服务 rootVM-24-7-ubuntu:~# docker run --name nginx -p 80:80 -d nginx 7a1578bedd97ffc48e9516d03a148c69e216a30f2d18f2624…

【MySQL】复合查询+表的内外连接

复合查询表的内外连接 1.基本查询回顾2.多表查询3.自连接4.子查询4.1单列子查询4.2多列子查询 5.在from子句中使用子查询6.合并查询7.表的内连和外连7.1内连接7.2外连接7.2.1左外连接 7.2.2右外连接 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1…

Java程序设计————从控制台输入

向控制台输入信息可以借助Scanner扫描器类来实现 语法&#xff1a; Scanner input new Scanner(System.in); 提示 &#xff08;1&#xff09;在使用Scanner类型之前&#xff0c;需要首先指明Scanner类所在的位置&#xff0c;既通过代码 import java.util.Scanner; &…

C语言:结构体指针

结构体指针 介绍定义结构体指针初始化结构体指针指向现有结构体变量动态分配内存 访问结构体成员使用结构体指针访问成员通过指针和解引用 结构体指针作为函数参数使用结构体指针构建链表 高级用法多级指针&#xff08;指向指针的指针&#xff09;动态二维数组结构体指针与链表…

超强的文本转语音模型ChatTTS,一键打包,免费使用

超强的文本转语音模型ChatTTS&#xff0c;一键打包&#xff0c;免费使用 项目简介项目亮点安装使用python 代码直接引入一键启动包安装部署 ChatTTS webUI 小结一下 文本转语音&#xff08;TTS&#xff09;在生活中的应用非常的广泛&#xff0c;比如有声小说、语音导航&#xf…

电脑安全模式怎么进?详细步骤一学就会!

电脑安全模式是一种特殊的启动模式&#xff0c;加载最少的驱动程序和服务&#xff0c;帮助用户解决系统问题&#xff0c;如驱动程序冲突、病毒感染或系统文件损坏。进入安全模式可以帮助您诊断和修复问题&#xff0c;恢复系统的正常运行。本文将介绍电脑安全模式怎么进的三种方…

仿虎嗅网wordpress模板,新闻网站模板

下载地址&#xff1a;仿虎嗅网wordpress模板,新闻网站模板 服务器环境要求如下&#xff1a; PHP 5.6/PHP7.0以上版本均适用 建议MySQL 5.6/其他版本 WordPress版本4.9&#xff0c;5.0&#xff5e;5.7均适用 主题自带超强SEO功能 可以自定义每一篇文章每一个页面的标题、关键…

DeepSORT(目标跟踪算法)中 可以设置阈值进行异常检测或目标跟踪的原因

DeepSORT&#xff08;目标跟踪算法&#xff09;中 可以设置阈值进行异常检测或目标跟踪的原因 flyfish 代码地址 https://github.com/shaoshengsong/DeepSORT 利用卡方分布的特性来设置合理的阈值进行异常检测或目标跟踪。 设定和定义 假设我们有一个 k k k 维的随机向量…

长期套餐是不是永久套餐?注意:并不是!

当我们在网上选择流量卡时&#xff0c;除了有短期套餐外&#xff0c;还有不少标注着长期套餐的流量卡&#xff0c;那么&#xff0c;长期套餐是不是永久套餐呢&#xff1f;能一直使用吗&#xff1f; ​ 在这里小编要说一下&#xff0c;长期套餐≠永久套餐 长期套餐就是字面意思…

上海斯歌荣获“2023年度杰出数字化转型方案提供商”奖项

为表彰上海斯歌在各行业的数字化转型事业中所做出的突出贡献&#xff0c;经CIO时代、新基建创新研究院专家组评审认定&#xff0c;授予上海斯歌“2023年度杰出数字化转型方案提供商”奖项。荣获该殊荣&#xff0c;不仅是业界对上海斯歌解决方案专业能力及落地实施能力的又一次认…

字符编码字符集那些事

此篇文章仅为网上资料的汇总&#xff0c;方便自己查询使用&#xff0c;原文如下&#xff1a; 参考文章1:一文读懂字符编码 参考文章2:菜鸟教程字符集 参考文章3:百度字符集 参考文章4:一个线上BUG彻底搞懂MySQL字符集&#xff0c;工作也快搞丢了 参考文章5:深入理解MySQL字符集…

Kaggle -- Titanic - Machine Learning from Disaster

新手kaggle之旅&#xff1a;1 . 泰坦尼克号 使用一个简单的决策树进行模型构建&#xff0c;达到75.8%的准确率&#xff08;有点低&#xff0c;但是刚开始&#xff09; 完整代码如下&#xff1a; import pandas as pd import numpy as npdf pd.read_csv("train.csv&quo…

我用香橙派做了一个Klipper 3D打印控制器

一个好用的Klipper 3D打印机&#xff0c;一定离不开一个可以稳定进行无线通信&#xff0c;而且性能足够&#xff0c;最重要是价格亲民的上位机。 所谓Klipper&#xff0c;简单来说就是一套可以通过联动上、下位机来有效提升3D打印精度的固件。它拥有高精度的步进电机控制&#…

【持久层】PostgreSQL使用教程

详细教程点击PostgreSQL 12.2 手册&#xff0c;观看官网中文手册。 PostgreSQL 是一个功能强大且开源的对象关系数据库系统&#xff0c;以其高扩展性和符合标准的优势广受欢迎。随着大数据时代的到来&#xff0c;PostgreSQL 也在大数据处理方面展示了其强大能力。本文将介绍 P…

【图书推荐】《Spark 3.0大数据分析与挖掘:基于机器学习》

本书重点 学习Spark 3.0 ML模块的机器学习算法&#xff0c;用于大数据分析与挖掘。 内容简介 Spark作为新兴的、应用范围广泛的大数据处理开源框架&#xff0c;吸引了大量的大数据分析与挖掘从业人员进行相关内容的学习与开发&#xff0c;其中ML是Spark 3.0机器学习框架使用…

STM32智能家居项目esp8266上云OneNet【附源码+详细教程】

目录 一、硬件选材 二、OneNet使用教程 三、代码修改教程 四、添加数据流方法 五、项目工程&#xff08;源码元件清单教程&#xff09; 小白也能做&#xff0c;项目工程在后文可下载。 一、硬件选材 二、OneNet使用教程 拿到代码后肯定是连不上网的&#xff0c;因为源码…