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(); }
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/119479.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...