QJsonObject、QJsonArray相互转换QByteArray

本文主要讲解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

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值