JSON - Qt 對 JSON的處理


1.關於JSON的介紹參考www.json.org

Qt提供處理JSON數據的支持。
QJSonObject類用於封裝JSON object;
QJsonDocument類提供讀寫JSON文檔的方法;
QJsonParseError類用於在JSON解析過程中報告錯誤。
上述三個類均是從Qt 5.0開始支持。

示例:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QJsonObject>
#include <QJsonDocument>
#include <QJsonParseError>
#include<QDebug>


MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

  QJsonObject json;
  json.insert("Type",QString("Rectangle"));
  json.insert("widght",42);
   json.insert("height",23);

   QJsonDocument document;
   document.setObject(json);
   QByteArray byteArray = document.toJson(QJsonDocument::Compact);
   qDebug()<<byteArray;

    QJsonParseError jsonError;
    QJsonDocument parseDoc = QJsonDocument::fromJson(byteArray,&jsonError);
    if(jsonError.error == QJsonParseError::NoError)
    {
        if(parseDoc.isObject())
        {
            QJsonObject jsonObj = parseDoc.object();
            if(jsonObj.contains("Type"))
            {
                QJsonValue typeValue = jsonObj.take("Type");
                if(typeValue.isString())
                {
                    QString strValue= typeValue.toString();
                    qDebug()<<"Type : "<<strValue;
                }
            }
            if(jsonObj.contains("height"))
            {
                QJsonValue heightValue = jsonObj.take("height");
                if(heightValue.isDouble())
                {
                    int iValue = heightValue.toVariant().toInt();
                    qDebug()<<"height : "<<iValue;
                }
            }
            if(jsonObj.contains("widght"))
            {
                QJsonValue widghtValue = jsonObj.take("widght");
                if(widghtValue.isDouble())
                {
                    int iValue =widghtValue.toVariant().toInt();
                    qDebug()<<"widght : "<<iValue;
                }
            }
        }
    }
}

MainWindow::~MainWindow()
{
    delete ui;
}

結果如下:

"{\"Type\":\"Rectangle\",\"height\":23,\"widght\":42}"
Type :  "Rectangle"
height :  23
widght :  42

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM