QT5中如何将数据转换为JSON格式

1.简单JSON数据

(1)首先加上有关JSON的头文件

#include <QJsonDocument>
#include <QJsonParseError>
#include <QJsonObject>
#include <QJsonValue>
#include <QJsonArray>

(2)在.h文件中加上全局变量的结构体

struct Today
{
    QString date;
};

//顺便给结构体给一个变量
Today today;

(3)在构造函数中初始化

today.date = "20190911";

(4)然后就可以将数据在textedit控件中显示出来

    QJsonObject json;//构建json对象json
    json.insert("date", today.date);
    
    QJsonDocument document;
    document.setObject(json);
    QByteArray byte_array = document.toJson(QJsonDocument::Compact);
    QString json_str(byte_array);
    ui->textEdit->setText(json_str);

(5)运行效果

{"date":"20190911"}

2.较复杂的JSON数据

(1)实现代码

    QJsonObject dataobj;//构建json对象dataobj
    dataobj.insert("shidu","95%");
    dataobj.insert("wendu","8");

    QJsonObject json;//构建json对象json
    json.insert("data", dataobj);//将dataobj中的数据插入到json对象中
    json.insert("date", today.date);

    QJsonDocument document;
    document.setObject(json);
    QByteArray byte_array = document.toJson(QJsonDocument::Compact);
    QString json_str(byte_array);
    ui->textEdit->setText(json_str);

(2)运行效果

3.复杂JSON数据

(1)代码
.h文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

struct Today
{
    QString date;
    QString city;
    QString wendu;
    QString fx;
    QString fl;
};

struct Forecast
{
    QString date;
    QString wendu1;
    QString rain;
    QString cloud;
    QString type;
};
class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
protected:
    void DataToJson();
private:
    Ui::MainWindow *ui;
    Today today;
    Forecast forecast[3];
};

#endif // MAINWINDOW_H

.cpp文件

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QJsonDocument>
#include <QJsonParseError>
#include <QJsonObject>
#include <QJsonValue>
#include <QJsonArray>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    // 结构体初始化
    today.date = "20190911";
    today.city = "CH";
    today.wendu = "29";
    today.fl = "22";
    today.fx = "33";
    for (int i = 0; i < 3; i++)
    {
        forecast[i].date = "00日星期0";
        forecast[i].wendu1 = "高温 0.0℃";
        forecast[i].rain = " 0mm";
        forecast[i].cloud = " 0%";
        forecast[i].type = "undefined";
    }
    DataToJson();

}

MainWindow::~MainWindow()
{
    delete ui;
}
void MainWindow::DataToJson()
{
/获取数据//
    QList<QString>forlist1;
    forlist1<<"11日星期一"<<"12日星期二"<<"13日星期三";
    for(int i=0;i<forlist1.size();i++)
    {
        //qDebug() << forlist1.at(i);
        forecast[i].date=forlist1.at(i);//将上面链表中的数据依次赋给forecast中的变量
    }

    QList<QString>forlist2;
    forlist2<<"10%"<<"5%"<<"2%";
    for(int i=0;i<forlist2.size();i++)
    {
        forecast[i].cloud=forlist2.at(i);
    }

    QList<QString>forlist3;
    forlist3<<"2mm"<<"3mm"<<"4mm";
    for(int i=0;i<forlist3.size();i++)
    {
        forecast[i].rain=forlist3.at(i);
    }
/

    QJsonObject yesjson;//构建json对象yesjson
    yesjson.insert("rain",forecast[0].rain);
    yesjson.insert("date",forecast[0].date);
    yesjson.insert("cloud",forecast[0].cloud);

/插入数据///
    //构建Json对象
      QJsonObject subjson[3];
      for (int i = 1; i < 3; ++i)//插入后面两天的数据
      {
        subjson[i].insert("date", forecast[i].date);
        subjson[i].insert("rain", forecast[i].rain);
        subjson[i].insert("cloud", forecast[i].cloud);
      }
    //构建Json数组
      QJsonArray jsonArray;
      for (int i = 1; i < 3; ++i)
      {
        jsonArray.append(QJsonValue(subjson[i]));
      }
/

    QJsonObject dataobj;//构建json对象dataobj
    dataobj.insert("shidu","95%");
    dataobj.insert("wendu","8");
    dataobj.insert("yesterday",yesjson);
    dataobj.insert("forecast",QJsonValue(jsonArray));


    QJsonObject json;//构建json对象json
    json.insert("data", dataobj);//将dataobj中的数据插入到json对象中
    json.insert("date", today.date);



    QJsonDocument document;
    document.setObject(json);
    QByteArray byte_array = document.toJson(QJsonDocument::Compact);
    QString json_str(byte_array);
    ui->textEdit->setText(json_str);
}

(2)运行效果

 

参考文档:
https://blog.csdn.net/wzz953200463/article/details/100135212
https://blog.csdn.net/u011720560/article/details/77603171
http://www.mycode.net.cn/language/cpp/576.html
https://blog.csdn.net/qq_30725967/article/details/98205514

  • 3
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值