Qt中使用Json需要一下幾個類:
QJsonValue 代表了json格式中的一個值
QJsonObject 代表了json格式的一個對象
QJsonArray 代表了json格式中的數組
QJsonDocument 用來讀寫json文件
QJsonParseError 用來表示json分析過程的錯誤
其中QJsonValue支持6中基本的數據類型:
- bool QJsonValue::Bool
- double QJsonValue::Double
- string QJsonValue::String
- array QJsonValue::Array
- object QJsonValue::Object
- null QJsonValue::Null
下面例子表示了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(); }