Qt 读写Json文件

头文件:

#ifndef JSONSAMPLE_H
#define JSONSAMPLE_H
 
#include <QObject>
#include <QJsonObject>
#include <QJsonDocument>
#include <QByteArray>
#include <QFile>
#include <QJsonArray>
#include <QDebug>
 
class jsonSample: QObject
{
    Q_OBJECT
public:
    jsonSample();
    void func_writeJson(const QString &fileName_);
    QString func_readJson(const QString &fileName_);
};
 
#endif // JSONSAMPLE_H
源码文件:
#include "jsonSample.h"
 
jsonSample::jsonSample()
{
 
}
 
void jsonSample::func_writeJson(const QString &fileName_)
{
    QJsonObject obj;        // root
    QJsonArray array;
    QJsonObject sub;        // subObject
    int id = 01;
    QString name = "sange";
    QString gender = "female";
    sub.insert("id", QJsonValue(id));
    sub.insert("name", QJsonValue(name));
    sub.insert("gender", QJsonValue(gender));
    array.append(QJsonValue(sub));
    obj.insert("Student", QJsonValue(array));
 
    // 写入到文件, 名字为info.json
    QJsonDocument doc(obj);
    QByteArray data = doc.toJson();
    QFile file("info.json");
    bool bRet = file.open(QIODevice::WriteOnly);
    if (bRet){
        file.write(data);
        file.close();
    }else{
        qDebug() << "Write error!" <<endl;
    }
}
 
 
QString jsonSample::func_readJson(const QString &fileName_)
{
    // 读取所有内容
    QFile file("info.json");
    file.open(QIODevice::ReadOnly);
    QByteArray data = file.readAll();
    file.close();
 
    // 解析Json过程
    QJsonParseError parseError;
    QJsonDocument doc = QJsonDocument::fromJson(data, &parseError);
    if (parseError.error != QJsonParseError::NoError){
        qDebug() <<"error:" << parseError.errorString();
        return "";
    }
 
    QJsonObject obj = doc.object();
    if (obj.contains("Student")){
        QJsonValue arrayTemp = obj.value("Student");
        QJsonArray array = arrayTemp.toArray();
        QJsonValue sub = array.at(0);   // 因为里面就一个元素, 如果有多个元素, 可以通过array.size()便利
        QJsonObject subObj = sub.toObject();
        //--------------------
        QJsonValue idTemp = subObj.value("id");
        int id = idTemp.toInt();
        QJsonValue nameTemp = subObj.value("name");
        QString name = nameTemp.toString();
        QJsonValue genderTemp = subObj.value("gender");
        QString gender = genderTemp.toString();
        return QString("%1: %2 - %3").arg(id).arg(name).arg(gender);
    }
    return "";
}
调用:
#include "MainWindow.h"
#include "ui_MainWindow.h"
 
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    tempJson = new jsonSample;
}
 
MainWindow::~MainWindow()
{
    delete ui;
}
 
void MainWindow::on_pushButtonWrite_clicked()
{
    tempJson->func_writeJson("");
}
 
void MainWindow::on_pushButtonRead_clicked()
{
    QString strJson = tempJson->func_readJson("");
    ui->textEdit->append(strJson);
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值