Qt中使用Json


Qt中使用Json需要一下幾個類:

QJsonValue            代表了json格式中的一個值

QJsonObject          代表了json格式的一個對象

QJsonArray            代表了json格式中的數組

QJsonDocument    用來讀寫json文件

QJsonParseError   用來表示json分析過程的錯誤

其中QJsonValue支持6中基本的數據類型:

下面例子表示了json的創建、讀取、序列化和反序列化的過程。

其中使用QJsonDocument  可以用來序列化和反序列化的過程,進而實現文件讀寫、socket的讀寫。

序列化json的函數:

QByteArray toBinaryData()   

QByteArray toJson(JsonFormat format = Indented)

反序列化:

QJsonDocument fromBinaryData(const QByteArray &data, DataValidation validation = Validate)  

QJsonDocument fromJson(const QByteArray &json, QJsonParseError *error = Q_NULLPTR)  

QJsonDocument fromRawData(const char *data, int size, DataValidation validation = Validate) 

QJsonDocument fromVariant(const QVariant &variant)

 

#include <QCoreApplication>
#include <QDebug>
#include <QJsonObject>
#include <QFile>
#include <QJsonDocument>
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QJsonObject obj;
    obj.insert("name", "lily");
    obj.insert("age", 23);
    QJsonObject addr;
    addr.insert("city", "guangzhou");
    addr.insert("province", "guangdong");
    obj.insert("addr", addr);
    qDebug() << obj<<endl;

    qDebug()<<obj.value("name").toString()<<endl;

    //序列化
    QJsonDocument jsonDoc(obj);
    QByteArray ba = jsonDoc.toJson();

    //反序列化
    QJsonParseError e;
    QJsonDocument jsonDocNew = QJsonDocument::fromJson(ba, &e);

    if(e.error == QJsonParseError::NoError && !jsonDocNew.isNull())
    {
        QJsonObject getObj = jsonDocNew.object();
        qDebug() << getObj<<endl;
    }


    return a.exec();
}

  

 


免責聲明!

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



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