本文主要讲解QJsonObject、QJsonArray与QByteArray之间的相互转化,QJsonDocument构造函数中使用QJsonArray和QJsonArray,并涉及到 QJsonValue转化为QJsonArray,QJsonObject,bool等
QJsonDocument
QJsonDocument(const QJsonObject &object)
QJsonDocument(const QJsonArray &array)
QJsonObject object() const
QJsonArray array() const
QByteArray toJson(JsonFormat format = Indented) const
QJsonDocument fromJson(const QByteArray &json, QJsonParseError *error = Q_NULLPTR)
通过QJsonDocument实现对应的QJsonObject、QJsonArray和QByteArray之间的转化
QJsonValue
讲对应的Value按对应格式转换为int bool double QString QVariant QJsonObject QJsonAarry,可以嵌套使用
在使用QJsonDocument、QJsonValue、QJsonArray、QJsonArray时,可以加入对应的头文件如:,也可以直接#include ,同时在pro中添加对应模块:QT+=script
QJsonObject———QByteArray之间相互转化
代码如下:
#include <QCoreApplication>
#include <QtScript>
// JSON格式的前缀
#define _id "id"
#define _name "nick"
#define _major "zhuanye"
#define _age "age"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QJsonObject object;// 构造QJSonObject
object.insert(_id, "2321");
object.insert(_name,"zhang");
object.insert(_age,18);
object.insert(_major, "Qt");
QJsonDocument document=QJsonDocument(object);
QByteArray array = document.toJson();// 转换成QByteArray
// QByteArray转换成QJsonObject
QJsonDocument document2=QJsonDocument::fromJson(array);
QJsonObject object2 = document2.object();
qDebug() << object2.value(_id).toString(); //对应值为QJsonValue
qDebug() << object2.value(_name).toString();
qDebug() << object2.value(_age).toInt();
qDebug() << object2.value(_major).toString();
return a.exec();
}
QJsonArray中嵌套QJsonObject,然后和QByteArray之间转化
#include <QCoreApplication>
#include <QtScript>
// JSON格式的前缀
#define _id "id"
#define _name "name"
#define _major "major"
#define _age "age"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QJsonObject object; //构造两个QJsonObject并插值
object.insert(_id, "1234");
object.insert(_name,"wang");
object.insert(_age,20);
object.insert(_major,"C++");
QJsonObject object2;
object2.insert(_id,"2321");
object2.insert(_name,"he");
object2.insert(_age,15);
object2.insert(_major,"Python");
QJsonArray array; // 构造QJsonArray
array.insert(0,"234");//插入字符串QString
array.insert(1,object);//插入QJsonObject
array.insert(2,object2);
// QJsonArray转换成QByteArray
QJsonDocument document=QJsonDocument(array);
QByteArray byte_array = document.toJson();
// QByteArray转换成QJsonArray
QJsonDocument document2=QJsonDocument::fromJson(byte_array);
QJsonArray array2 = document2.array();
QString title = array2.at(0).toString();
qDebug() << "title: " << title;
qDebug() << "...........................................................";
for(int i = 1; i < array2.size(); ++i)
{
QJsonObject json = array2.at(i).toObject(); //QJsonArray里面第二、三元素为QJsonObject
qDebug() << json.value(_id).toString();//QJsonValue转换为对应类型
qDebug() << json.value(_name).toString();
qDebug() << json.value(_age).toInt();
qDebug() << json.value(_major).toString();
qDebug() << "...........................................................";
}
return a.exec();
}
转载请标明出处:https://blog.youkuaiyun.com/qq_35173114/article/details/81024143