QT 解析,生成JSON

环境

Qt 5.4.2

功能

QT 解析,生成JSON

源码

1.mainwindow.h

#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
#include <QDebug>

class MainWindow : public QMainWindow
{
    Q_OBJECT
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
private:
    Ui::MainWindow *ui;
private slots:
    void on_pushButton_analysis_clicked();
    void on_pushButton_generate_clicked();
private:
    QString sPrintfMsg;
private:
    void printfJSON(QJsonObject jsonObj);
};

#endif // MAINWINDOW_H

2.mainwindow.cpp

void MainWindow::on_pushButton_analysis_clicked()
{
   sPrintfMsg = "";
   QJsonDocument document = QJsonDocument::fromJson(ui->textEdit_json->toPlainText().toLocal8Bit());
   
   if(document.isObject())
   {
        QJsonObject jsonObject = document.object();
        printfJSON(jsonObject);
   }else if (document.isArray()) {
       // 处理JSON数组
       QJsonArray jsonArray = document.array();
       sPrintfMsg = "JSON数组:";

       for (int i=0; i < jsonArray.count() ; i++)
       {
           sPrintfMsg += jsonArray[i].toString() + ",";
       }
   } else {
       sPrintfMsg = "无效的JSON数据";
   }
   ui->textEdit_analysis->setText(sPrintfMsg);
}

void MainWindow::printfJSON(QJsonObject jsonObj)
{
    for (QJsonObject::iterator it = jsonObj.begin(); it != jsonObj.end(); ++it)
    {
        if(it.value().isObject())
        {
            sPrintfMsg += "------------------------------------------------\n";
            sPrintfMsg += it.key() + ":\n";
            printfJSON(it.value().toObject());
        }else{
            sPrintfMsg += it.key() + ":" + it.value().toString() + "\n";
        }
    }
}

void MainWindow::on_pushButton_generate_clicked()
{

    QJsonObject root;

    root.insert(ui->label_age->text(), ui->lineEdit_age->text());
    root.insert(ui->label_name->text(), ui->lineEdit_name->text());

    QJsonArray hobbiesArray;
    hobbiesArray.append(ui->lineEdit_hobbies1->text());
    hobbiesArray.append(ui->lineEdit_hobbies2->text());
    root.insert(ui->label_hobbies->text(), hobbiesArray);

    QJsonObject addressObj;
    addressObj.insert(ui->label_city->text(), ui->lineEdit_city->text());
    addressObj.insert(ui->label_street->text(), ui->lineEdit_street->text());

    root.insert(ui->label_adress->text(), addressObj);

    // 创建 JSON 
    QJsonDocument jsonDoc(root);
    QByteArray json = jsonDoc.toJson();
    ui->textEdit_generate->setText(QString(json));
}

运行

在这里插入图片描述
在这里插入图片描述

  • 16
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值