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类相关推荐

  1. 【Qt】Qt中QJsonValue类

    00. 目录 文章目录 00. 目录 01. QJsonValue类介绍 02. QJsonValue成员方法 03. QJsonValue成员方法介绍 04. 附录 01. QJsonValue类介 ...

  2. 【Qt】Qt中QJsonObject类

    00. 目录 文章目录 00. 目录 01. QJsonObject类简介 02. 公有类型 03. 公有成员方法 04. 公有成员方法解析 05. 参考示例 06. 附录 01. QJsonObje ...

  3. PyQt(Python+Qt)入门:Designer组件属性编辑界面中QWidget类相关属性详解

    本文适用人员:本文比较长,适合不理解Qt Designer部件属性的人员阅读或资料查找. 声明: 1.如果有人认为本文是简单的复制粘贴+翻译而成,敬请读本文最后的后记: 2.本文为老猿Python学习 ...

  4. Qt项目中,绘制只有两个圆角的矩形及QPainterPath类的应用

    总第39篇 本文主要梳理总结了在Qt项目开发过程中,某些特殊场合绘制只有两个圆角矩形的方法,并在此基础上详细介绍了类QPainterPath的用法. 1.两个圆角矩形的绘制方法 在Qt项目中,绘制只有 ...

  5. Qt使用第三方串口类qextserialport无法打开串口的可能解决方案(文章中描述的可以解决)

    我前面的博客提到了,在我的笔记本电脑中用QT的第三方串口类QextSerilPort打不开串口,今天终于解决了,下面简单分享一下: 先说下环境:我用的是QT4.8.0,每三方的串口类QextSeria ...

  6. Qt/PyQt中使用系统全局的快捷键

    Qt/PyQt中使用系统全局的快捷键 除了全局快捷键部分外,其他的都比较简单,都是我实现"onekeycodehighlighter"中碰到的一些小问题,这里顺面整理一下.事实上, ...

  7. 在Qt Designer中使用自定义Widgets小部件

    在Qt Designer中使用自定义Widgets 在Qt Designer中使用自定义Widgets 处理自定义Widgets小部件 推广Widgets小部件 用户定义的自定义小部件 在Qt Des ...

  8. Qt Quick 中 QML 与 C++ 混合编程详解

    Qt Quick 技术的引入,使得你能够快速构建 UI ,具有动画.各种绚丽效果的 UI 都不在话下.但它不是万能的,也有很多局限性,原来 Qt 的一些技术,比如低阶的网络编程如 QTcpSocket ...

  9. C++ 11 在 Qt 5 中的应用

    C++ 11 现在已经是 C++ 标准,也就没有理由不在新的应用中使用.Qt 4.8 是第一个支持 C++ 11 特性的 Qt 版本,不过这里,我们首先介绍的是,Qt 5 中如何结合使用 C++ 11 ...

最新文章

  1. 深入理解 C 指针阅读笔记 -- 第一章
  2. ArcGIS注册SDE库数据源
  3. 为什么手机网速太慢_为什么手机信号满格,网速却很慢?终于知道为啥了
  4. smartdraw 2008 成功安装
  5. ftp连接 java.net.ConnectException: Connection refused
  6. 异形3×3魔方还原教程_【初级篇】(四)最简单的三阶魔方入门教程——中层还原...
  7. php搭建的网站空白,使用phpstudy搭建dedecms网站后台页面空白解决方法
  8. 贾跃亭又成功拿到6亿融资!九城与法拉第未来签约...
  9. 无法连接到WMI提供程序。你没有权限或者该服务器无访问
  10. Beyond Compare 怎么新增与卸载文件格式
  11. 最新酷盒工具箱iApp源码9.5版+功能很多
  12. 到底是什么决定了路由器的信号强弱和穿墙能力?
  13. java 映射类的方法_java什么是映射
  14. html5移动端webscoket实现在线聊天
  15. Shiro记住我(RememberMe)
  16. 自制ADK To Win11PE,加入原生explorer,初步修改注册表(图文1.1万字,很细) (2)
  17. tp6 防止XSS攻击之表单提交安全校验
  18. PPT文档打不开提示访问出错怎么办
  19. docker中各ID之间的关系和计算(二)-layerID-diffID-chainID-cacheID的计算
  20. vue网页打印针式打印机内容显示不全

热门文章

  1. android中对sd卡的 操作文件问题 创建目录 创建文件到指定目录
  2. web页面优化之动态加载js和文件
  3. .net开发人员应该知道(一)
  4. ACE线程管理机制-并发控制
  5. html里table的遍历,js遍历table中的tr
  6. mysql hive索引_Hive数据仓库--HiveQL视图和索引
  7. Java黑皮书课后题第4章:*4.5(几何:正多边形的面积)正多边形是一个具有n条边的多边形,它每条边的长度都相等,而且所有角的度数也相等。编写程序,提示用户数输入边个数和边长,然后显示它的面积
  8. ai画面怎么调大小_ai如何调整对象大小
  9. java基础(网络编程---IP、端口、URL)
  10. 全局异步和主线程异步区别、改变PlaceHolder颜色、解决键盘弹起挡住文本框问题...