前言
在QT开发中,涉及到网络方面的知识,往往离不开JSON,JSON 格式是文本,它能够轻松地在服务器浏览器之间传输,并用作任何编程语言的数据格式。 下面,我们给出了一个小的demo,用来巩固其在QT中的应用。
Part1: 使用json类写json对象
问题- - - 如何创建JSON对象,并将JSON对象中所包含的数据保存到本地? 以图1为例,我们将一步一步演示这个过程:
解决方法
- 第一步(创建工程)
- 第二步(代码实现)
- 先引入四个头文件(头文件的作用已给出对应注释)
#include<QJsonDocument>
#include<QJsonObject>
#include<QJsonValue>
#include<QFile>
QJsonObject obj;
QJsonObject sub;
sub.insert("IP",QJsonValue("192.168.1.1"));
sub.insert("Port",QJsonValue("80"));
obj.insert("Server",QJsonValue(sub));
QJsonDocument doc(obj);
QByteArray data=doc.toJson();
QFile file("D:\\data.json");
file.open(QIODevice::WriteOnly);
file.write(data);
file.close();
- 最后一步(检验效果)
- 由于我保存在了D盘,会发现D盘新生成了一个data.json文件,用Notepad++打开,会发现就是我们想要的数据!
完整代码如下
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QJsonDocument>
#include<QJsonObject>
#include<QJsonValue>
#include<QFile>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
QJsonObject obj;
QJsonObject sub;
sub.insert("IP",QJsonValue("192.168.1.1"));
sub.insert("Port",QJsonValue("80"));
obj.insert("Server",QJsonValue(sub));
QJsonDocument doc(obj);
QByteArray data=doc.toJson();
QFile file("D:\\data.json");
file.open(QIODevice::WriteOnly);
file.write(data);
file.close();
}
MainWindow::~MainWindow()
{
delete ui;
}
Part2: 使用json类读json对象
如Part1所示,我们已经将JSON对象保存在本地,那么如果我们要读取的话,应该如何操作呢?这里就不细讲了,所有注释都在图中,相应代码也在后面给出了。
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QJsonDocument>
#include<QJsonObject>
#include<QJsonValue>
#include<QFile>
#include<QDebug>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
QFile file("D:\\data.json");
file.open(QIODevice::ReadOnly);
QByteArray data = file.readAll();
file.close();
QJsonDocument doc = QJsonDocument::fromJson(data);
if(doc.isObject())
{
QJsonObject obj = doc.object();
QJsonValue value = obj.value("Server");
if(value.isObject())
{
QJsonObject subobj = value.toObject();
QString IP = subobj.value("IP").toString();
QString Port = subobj.value("Port").toString();
qDebug()<<IP<<Port;
}
}
}
MainWindow::~MainWindow()
{
delete ui;
}
最后,觉得本文内容对你有所帮助的话,希望能点赞收藏,你的鼓励是对我最大的支持!
|