【Qt】Qt中QJsonArray类
00. 目录
文章目录
- 00. 目录
- 01. QJsonArray类简介
- 02. QJsonArray成员方法
- 03. QJsonArray成员方法解析
- 04. 参考示例
- 05. 附录
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 参考:官方文档
【Qt】Qt中QJsonArray类相关推荐
- 【Qt】Qt中QJsonValue类
00. 目录 文章目录 00. 目录 01. QJsonValue类介绍 02. QJsonValue成员方法 03. QJsonValue成员方法介绍 04. 附录 01. QJsonValue类介 ...
- 【Qt】Qt中QJsonObject类
00. 目录 文章目录 00. 目录 01. QJsonObject类简介 02. 公有类型 03. 公有成员方法 04. 公有成员方法解析 05. 参考示例 06. 附录 01. QJsonObje ...
- PyQt(Python+Qt)入门:Designer组件属性编辑界面中QWidget类相关属性详解
本文适用人员:本文比较长,适合不理解Qt Designer部件属性的人员阅读或资料查找. 声明: 1.如果有人认为本文是简单的复制粘贴+翻译而成,敬请读本文最后的后记: 2.本文为老猿Python学习 ...
- Qt项目中,绘制只有两个圆角的矩形及QPainterPath类的应用
总第39篇 本文主要梳理总结了在Qt项目开发过程中,某些特殊场合绘制只有两个圆角矩形的方法,并在此基础上详细介绍了类QPainterPath的用法. 1.两个圆角矩形的绘制方法 在Qt项目中,绘制只有 ...
- Qt使用第三方串口类qextserialport无法打开串口的可能解决方案(文章中描述的可以解决)
我前面的博客提到了,在我的笔记本电脑中用QT的第三方串口类QextSerilPort打不开串口,今天终于解决了,下面简单分享一下: 先说下环境:我用的是QT4.8.0,每三方的串口类QextSeria ...
- Qt/PyQt中使用系统全局的快捷键
Qt/PyQt中使用系统全局的快捷键 除了全局快捷键部分外,其他的都比较简单,都是我实现"onekeycodehighlighter"中碰到的一些小问题,这里顺面整理一下.事实上, ...
- 在Qt Designer中使用自定义Widgets小部件
在Qt Designer中使用自定义Widgets 在Qt Designer中使用自定义Widgets 处理自定义Widgets小部件 推广Widgets小部件 用户定义的自定义小部件 在Qt Des ...
- Qt Quick 中 QML 与 C++ 混合编程详解
Qt Quick 技术的引入,使得你能够快速构建 UI ,具有动画.各种绚丽效果的 UI 都不在话下.但它不是万能的,也有很多局限性,原来 Qt 的一些技术,比如低阶的网络编程如 QTcpSocket ...
- C++ 11 在 Qt 5 中的应用
C++ 11 现在已经是 C++ 标准,也就没有理由不在新的应用中使用.Qt 4.8 是第一个支持 C++ 11 特性的 Qt 版本,不过这里,我们首先介绍的是,Qt 5 中如何结合使用 C++ 11 ...
最新文章
- 深入理解 C 指针阅读笔记 -- 第一章
- ArcGIS注册SDE库数据源
- 为什么手机网速太慢_为什么手机信号满格,网速却很慢?终于知道为啥了
- smartdraw 2008 成功安装
- ftp连接 java.net.ConnectException: Connection refused
- 异形3×3魔方还原教程_【初级篇】(四)最简单的三阶魔方入门教程——中层还原...
- php搭建的网站空白,使用phpstudy搭建dedecms网站后台页面空白解决方法
- 贾跃亭又成功拿到6亿融资!九城与法拉第未来签约...
- 无法连接到WMI提供程序。你没有权限或者该服务器无访问
- Beyond Compare 怎么新增与卸载文件格式
- 最新酷盒工具箱iApp源码9.5版+功能很多
- 到底是什么决定了路由器的信号强弱和穿墙能力?
- java 映射类的方法_java什么是映射
- html5移动端webscoket实现在线聊天
- Shiro记住我(RememberMe)
- 自制ADK To Win11PE,加入原生explorer,初步修改注册表(图文1.1万字,很细) (2)
- tp6 防止XSS攻击之表单提交安全校验
- PPT文档打不开提示访问出错怎么办
- docker中各ID之间的关系和计算(二)-layerID-diffID-chainID-cacheID的计算
- vue网页打印针式打印机内容显示不全
热门文章
- android中对sd卡的 操作文件问题 创建目录 创建文件到指定目录
- web页面优化之动态加载js和文件
- .net开发人员应该知道(一)
- ACE线程管理机制-并发控制
- html里table的遍历,js遍历table中的tr
- mysql hive索引_Hive数据仓库--HiveQL视图和索引
- Java黑皮书课后题第4章:*4.5(几何:正多边形的面积)正多边形是一个具有n条边的多边形,它每条边的长度都相等,而且所有角的度数也相等。编写程序,提示用户数输入边个数和边长,然后显示它的面积
- ai画面怎么调大小_ai如何调整对象大小
- java基础(网络编程---IP、端口、URL)
- 全局异步和主线程异步区别、改变PlaceHolder颜色、解决键盘弹起挡住文本框问题...