当前位置:网站首页>QT notes - qjason
QT notes - qjason
2022-07-22 18:11:00 【Cool breeze in the old street °】
The header file :
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
#include <QJsonParseError>
#include <QJsonValue>
QJsonDocument Class for reading and writing JSON file .
QJsonArray Class encapsulates a JSON Array .
QJsonObject Class encapsulates a JSON object .
QJsonValue Class encapsulates a value .
QJsonParseError Class is used in JSON Error reported in parsing .
jsonObject The output order of and The insertion order is inconsistent
jsonArray The output order of and The insertion order is consistentjsonValue You can judge the type of value then What type of value to convert
1. ordinary jsonObject:
1.1 ordinary jsonObject output to a file
QJsonObject json;
json.insert("Name", "Qt");
json.insert("From", 1991);
json.insert("Cross Platform", true);
// structure JSON file
QJsonDocument document;
document.setObject(json);
byteArray2 = document.toJson(QJsonDocument::Compact);
QString strJson(byteArray2);
qDebug() << strJson;
1.2 Parse read jsonObject
QJsonParseError jsonError;
QJsonDocument document = QJsonDocument::fromJson(byteArray2, &jsonError);
if (!document.isNull() && jsonError.error == QJsonParseError::NoError)
{
// Is there an object
if (document.isObject())
{
// Is there a specified Key
QJsonObject object = document.object();
if (object.contains("Name"))
{
// Specified or not Value For the string
QJsonValue value = object.value("Name");
if (value.isString())
{
QString strName = value.toString();
qDebug() << "Name:" << strName;
}
}
if (object.contains("From"))
{
QJsonValue value = object.value("From");
if (value.isDouble())
{
int nFrom = value.toVariant().toInt();
qDebug() << "From:" << nFrom;
}
}
if (object.contains("Cross Platform"))
{
QJsonValue value = object.value("Cross Platform");
if (value.isBool())
{
bool bCrossPlatform = value.toBool();
qDebug() << "Platform:" << bCrossPlatform;
}
}
}
}
1.3 File output and code output
2. ordinary jsonArray:
2.1 ordinary jsonArray output to a file
QJsonArray jsonArray;
jsonArray.append(8.17);
jsonArray.append(true);
jsonArray.append("lion_cxq");
QJsonDocument jsonDoc;
jsonDoc.setArray(jsonArray);
byteArray3 = jsonDoc.toJson(QJsonDocument::Compact);
qDebug() << QString(byteArray3);
2.2 Parse read jsonArray
QJsonParseError jsonError;
QJsonDocument jsonDoc = QJsonDocument::fromJson(byteArray3, &jsonError);
if (!jsonDoc.isNull() && jsonError.error == QJsonParseError::NoError)
{
if (jsonDoc.isArray())
{
QJsonArray jsonArray = jsonDoc.array();
int nSize = jsonArray.size();
for (int i = 0; i < nSize; i++)
{
QJsonValue value = jsonArray.at(i);
if (value.type() == QJsonValue::String)
{
QString strName = value.toString();
qDebug() << strName;
}
if (value.type() == QJsonValue::Double)
{
double dValue = value.toDouble();
qDebug() << dValue;
}
if (value.type() == QJsonValue::Bool)
{
bool bValue = value.toBool();
qDebug() << bValue;
}
}
}
}
2.3 File output and code output
3.jsonArray and jsonObject combination :
3.1jsonArray and jsonOject output to a file
QJsonObject page;
page.insert("Developers", "https://www.qt.io/developers/");
page.insert("Download", "https://www.qt.io/download/");
page.insert("Home", "https://www.qt.io/");
QJsonArray version;
version.append(4.8);
version.append(5.2);
version.append(5.7);
QJsonObject jsonObject;
jsonObject.insert("Company", "Digia");
jsonObject.insert("From", 1991);
jsonObject.insert("Name", "Qt");
jsonObject.insert("Page", QJsonValue(page));
jsonObject.insert("Version", QJsonValue(version));
QJsonDocument jsonDoc;
jsonDoc.setObject(jsonObject);
byteArray4 = jsonDoc.toJson();
qDebug() << QString(byteArray4);
3.2 Parse and read jsonArray and jsonOject
QJsonParseError jsonError;
QJsonDocument jsonDoc = QJsonDocument::fromJson(byteArray4, &jsonError);
if (!jsonDoc.isNull() && jsonError.error == QJsonParseError::NoError)
{
// Is there an object
if (jsonDoc.isObject())
{
// Corresponding Key Of alue value
QJsonObject jsonObject = jsonDoc.object();
if (jsonObject.contains("Company"))
{
QJsonValue jsonValue = jsonObject.value("Company");
if (jsonValue.isString())
{
QString strCompany = jsonValue.toString();
qDebug() << strCompany;
}
}
if (jsonObject.contains("From"))
{
QJsonValue jsonValue = jsonObject.value("From");
if (jsonValue.toDouble())
{
int iFrom = jsonValue.toInt();
qDebug() << iFrom;
}
}
if (jsonObject.contains("Name"))
{
QJsonValue jsonValue = jsonObject.value("Name");
if (jsonValue.isString())
{
QString strName = jsonValue.toString();
qDebug() << strName;
}
}
if (jsonObject.contains("Page"))
{
QJsonValue jsonValue = jsonObject.value("Page");
if (jsonValue.isObject())
{
QJsonObject jsonObject1 = jsonValue.toObject();
if (jsonObject1.contains("Developers"))
{
QJsonValue jsonValue1 = jsonObject1.value("Developers");
if (jsonValue1.isString())
{
QString strDevlopers = jsonValue1.toString();
qDebug() << strDevlopers;
}
}
if (jsonObject1.contains("Download"))
{
QJsonValue jsonValue1 = jsonObject1.value("Download");
if (jsonValue1.isString())
{
QString strDownload = jsonValue1.toString();
qDebug() << strDownload;
}
}
if (jsonObject1.contains("Home"))
{
QJsonValue jsonValue1 = jsonObject1.value("Home");
if (jsonValue1.isString())
{
QString strHome = jsonValue1.toString();
qDebug() << strHome;
}
}
}
}
if (jsonObject.contains("Version"))
{
QJsonValue jsonValue1 = jsonObject.value("Version");
if (jsonValue1.isArray())
{
QJsonArray jsonArray = jsonValue1.toArray();
int sizeArray = jsonArray.size();
for (int i = 0; i < sizeArray; ++i)
{
QJsonValue value = jsonArray.at(i);
if (value.isDouble())
{
double dValue = value.toDouble();
qDebug() << dValue;
}
}
}
}
}
}
3.3 File output And code output
Complete code :
#pragma once
#include <QtWidgets/QWidget>
#include "ui_QJsonArrayDifficultTest.h"
class QJsonArrayDifficultTest : public QWidget
{
Q_OBJECT
public:
QJsonArrayDifficultTest(QWidget *parent = Q_NULLPTR);
~QJsonArrayDifficultTest();
void QJsonArrayDifficultTest1();
void QJsonArrayDifficultTest2();
void resolutionArrayDifficultTest2();
void QJsonArrayDifficultTest3();
void resolutionArrayDifficultTest3();
void QJsonArrayDifficultTest4();
void resolutionArrayDifficultTest4();
private:
Ui::QJsonArrayDifficultTestClass ui;
QByteArray byteArray2;
QByteArray byteArray3;
QByteArray byteArray4;
};
#include "QJsonArrayDifficultTest.h"
#include <QFile>
#include <QDebug>
#include <QJsonArray>
#include <QJsonObject>
#include <QDateTime>
#include <QThread>
#include <QJsonDocument>
#include <QJsonParseError>
QJsonArrayDifficultTest::QJsonArrayDifficultTest(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
QJsonArrayDifficultTest1();
QJsonArrayDifficultTest2();
resolutionArrayDifficultTest2();
QJsonArrayDifficultTest3();
resolutionArrayDifficultTest3();
QJsonArrayDifficultTest4();
resolutionArrayDifficultTest4();
}
QJsonArrayDifficultTest::~QJsonArrayDifficultTest()
{
}
void QJsonArrayDifficultTest::QJsonArrayDifficultTest1()
{
QFile file("./jsonArrayDifficlutTset1.json");
if (file.open(QIODevice::ReadWrite))
qDebug() << "file open error";
else
qDebug() << "file open";
file.resize(0);
QJsonArray jsonArray;
for (int i = 0; i < 3; i++)
{
QJsonObject jsonObject;
jsonObject.insert("name", QString::number(i + 1));
jsonObject.insert("age", i + 18);
jsonObject.insert("time", QDateTime::currentDateTime().toString("yyyy-MM-dd hh-MM-ss"));
jsonArray.append(jsonObject);
}
QJsonObject jsonObject;
jsonObject.insert("number", jsonArray.size());
jsonArray.append(jsonObject);
QJsonDocument jsonDoc;
jsonDoc.setArray(jsonArray);
file.write(jsonDoc.toJson());
file.close();
qDebug() << "write to file";
if (jsonDoc.isArray())
qDebug() << QStringLiteral(" There are arrays ") << jsonDoc.array();
if (jsonDoc.isObject())
qDebug() << QStringLiteral(" There are objects ");
else
qDebug() << QStringLiteral(" No object ") << jsonDoc.object();
if (!jsonDoc.isNull())
qDebug() << QStringLiteral(" Not empty ") << jsonDoc.toJson(QJsonDocument::Compact);
if (!jsonDoc.isEmpty())
{
QByteArray byteArray = jsonDoc.toJson(QJsonDocument::Indented);
qDebug() << QStringLiteral(" Not empty ") << QString(byteArray);
}
}
void QJsonArrayDifficultTest::QJsonArrayDifficultTest2()
{
QFile file("./jsonArrayDifficlutTset2.json");
if (file.open(QIODevice::ReadWrite))
qDebug() << "file open error";
else
qDebug() << "file open";
file.resize(0);
QJsonObject json;
json.insert("Name", "Qt");
json.insert("From", 1991);
json.insert("Cross Platform", true);
QJsonDocument document;
document.setObject(json);
byteArray2 = document.toJson(QJsonDocument::Compact);
QString strJson(byteArray2);
qDebug() << strJson;
file.write(document.toJson());
file.close();
qDebug() << "write to file";
}
void QJsonArrayDifficultTest::resolutionArrayDifficultTest2()
{
QJsonParseError jsonError;
QJsonDocument document = QJsonDocument::fromJson(byteArray2, &jsonError);
if (!document.isNull() && jsonError.error == QJsonParseError::NoError)
{
if (document.isObject())
{
QJsonObject object = document.object();
if (object.contains("Name"))
{
QJsonValue value = object.value("Name");
if (value.isString())
{
QString strName = value.toString();
qDebug() << "Name:" << strName;
}
}
if (object.contains("From"))
{
QJsonValue value = object.value("From");
if (value.isDouble())
{
int nFrom = value.toVariant().toInt();
qDebug() << "From:" << nFrom;
}
}
if (object.contains("Cross Platform"))
{
QJsonValue value = object.value("Cross Platform");
if (value.isBool())
{
bool bCrossPlatform = value.toBool();
qDebug() << "Platform:" << bCrossPlatform;
}
}
}
}
}
void QJsonArrayDifficultTest::QJsonArrayDifficultTest3()
{
QFile file("./jsonArrayDifficlutTset3.json");
if (file.open(QIODevice::ReadWrite))
qDebug() << "file open error";
else
qDebug() << "file open";
file.resize(0);
QJsonArray jsonArray;
jsonArray.append(8.17);
jsonArray.append(true);
jsonArray.append("lion_cxq");
QJsonDocument jsonDoc;
jsonDoc.setArray(jsonArray);
byteArray3 = jsonDoc.toJson(QJsonDocument::Compact);
qDebug() << QString(byteArray3);
file.write(jsonDoc.toJson());
file.close();
qDebug() << "wirte finish";
}
void QJsonArrayDifficultTest::resolutionArrayDifficultTest3()
{
QJsonParseError jsonError;
QJsonDocument jsonDoc = QJsonDocument::fromJson(byteArray3, &jsonError);
if (!jsonDoc.isNull() && jsonError.error == QJsonParseError::NoError)
{
if (jsonDoc.isArray())
{
QJsonArray jsonArray = jsonDoc.array();
int nSize = jsonArray.size();
for (int i = 0; i < nSize; i++)
{
QJsonValue value = jsonArray.at(i);
if (value.type() == QJsonValue::String)
{
QString strName = value.toString();
qDebug() << strName;
}
if (value.type() == QJsonValue::Double)
{
double dValue = value.toDouble();
qDebug() << dValue;
}
if (value.type() == QJsonValue::Bool)
{
bool bValue = value.toBool();
qDebug() << bValue;
}
}
}
}
}
void QJsonArrayDifficultTest::QJsonArrayDifficultTest4()
{
QFile file("./jsonArrayDifficultTest4.json");
if (file.open(QIODevice::ReadWrite))
{
qDebug() << "wirte read json file";
}
else
{
qDebug() << "qita file";
return;
}
file.resize(0);
QJsonObject page;
page.insert("Developers", "https://www.qt.io/developers/");
page.insert("Download", "https://www.qt.io/download/");
page.insert("Home", "https://www.qt.io/");
QJsonArray version;
version.append(4.8);
version.append(5.2);
version.append(5.7);
QJsonObject jsonObject;
jsonObject.insert("Company", "Digia");
jsonObject.insert("From", 1991);
jsonObject.insert("Name", "Qt");
jsonObject.insert("Page", QJsonValue(page));
jsonObject.insert("Version", QJsonValue(version));
QJsonDocument jsonDoc;
jsonDoc.setObject(jsonObject);
byteArray4 = jsonDoc.toJson();
qDebug() << QString(byteArray4);
file.write(jsonDoc.toJson());
file.close();
qDebug() << "write file";
}
void QJsonArrayDifficultTest::resolutionArrayDifficultTest4()
{
QJsonParseError jsonError;
QJsonDocument jsonDoc = QJsonDocument::fromJson(byteArray4, &jsonError);
if (!jsonDoc.isNull() && jsonError.error == QJsonParseError::NoError)
{
// Is there an object
if (jsonDoc.isObject())
{
// Corresponding Key Of alue value
QJsonObject jsonObject = jsonDoc.object();
if (jsonObject.contains("Company"))
{
QJsonValue jsonValue = jsonObject.value("Company");
if (jsonValue.isString())
{
QString strCompany = jsonValue.toString();
qDebug() << strCompany;
}
}
if (jsonObject.contains("From"))
{
QJsonValue jsonValue = jsonObject.value("From");
if (jsonValue.toDouble())
{
int iFrom = jsonValue.toInt();
qDebug() << iFrom;
}
}
if (jsonObject.contains("Name"))
{
QJsonValue jsonValue = jsonObject.value("Name");
if (jsonValue.isString())
{
QString strName = jsonValue.toString();
qDebug() << strName;
}
}
if (jsonObject.contains("Page"))
{
QJsonValue jsonValue = jsonObject.value("Page");
if (jsonValue.isObject())
{
QJsonObject jsonObject1 = jsonValue.toObject();
if (jsonObject1.contains("Developers"))
{
QJsonValue jsonValue1 = jsonObject1.value("Developers");
if (jsonValue1.isString())
{
QString strDevlopers = jsonValue1.toString();
qDebug() << strDevlopers;
}
}
if (jsonObject1.contains("Download"))
{
QJsonValue jsonValue1 = jsonObject1.value("Download");
if (jsonValue1.isString())
{
QString strDownload = jsonValue1.toString();
qDebug() << strDownload;
}
}
if (jsonObject1.contains("Home"))
{
QJsonValue jsonValue1 = jsonObject1.value("Home");
if (jsonValue1.isString())
{
QString strHome = jsonValue1.toString();
qDebug() << strHome;
}
}
}
}
if (jsonObject.contains("Version"))
{
QJsonValue jsonValue1 = jsonObject.value("Version");
if (jsonValue1.isArray())
{
QJsonArray jsonArray = jsonValue1.toArray();
int sizeArray = jsonArray.size();
for (int i = 0; i < sizeArray; ++i)
{
QJsonValue value = jsonArray.at(i);
if (value.isDouble())
{
double dValue = value.toDouble();
qDebug() << dValue;
}
}
}
}
}
}
}
Reference blog :
https://www.21ic.com/tougao/article/11375.html
边栏推荐
猜你喜欢
【OpenCV入门实战】利用电脑前置摄像头进行人脸检测
路由协议是什么
Super practical transformation strategy: 2022 central state-owned enterprise cloud native landing practical guide was officially released
Detailed explanation of bokeh parameter setting
逻辑回归(公式推导+numpy实现)
QT笔记—— VS一个项目生成多个exe文件
线性回归(公式推导+numpy实现)
需要达到什么水平,程序员才能顺利拿到20k月薪无压力?
ieee下载文献的方法
Aruba学习笔记04-Web UI --Configuration面板介绍
随机推荐
解决 TypeScript 报错:A computed property name in an interface must refer to an expression whose type ...
Bigder:35/100 development colleagues said that I tested it myself. But something went wrong after the launch.
Evolution of multi activity in different places
RK3399平台开发系列讲解(input子系统)4.52、input子系统的实现原理
Gbase8s database set autofree statement
prosody相关概念了解。xmpp,jabber,bosh等
GBase8s数据库对 SET COLLATION 的限制
RK3399平台开发系列讲解(内存篇)15.33、为什么可用内存会远超物理内存?
go对接口简单理解
Excel导入导出Controller
从0开始教你编写Makefile文件
Bigder:40/100 how to organize a use case review
vcs与verdi学习记录
Teach you to write makefile files from 0
MySQL和MariaDB区别
一招教你招聘数据可视化~还有人不会这些数据分析小案例吗?
ieee下载文献的方法
力扣练习——26 分割数组为连续子序列
计算存款利息
Anaconda 环境迁移