0
点赞
收藏
分享

微信扫一扫

QT解析QJsonObject和QJsonArray以及和QByteArray之间的相互转换_F_hawk189_新浪博客

#include "QApplication"

// JSON格式的前缀
#define J_ID "id"
#define J_NICK "nick"
#define J_ZHUANYE "zhuanye"
#define J_AGE "age"

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
// 构造QJSonObject
QJsonObject json_object;
json_object.insert(J_ID, "1263");
json_object.insert(J_NICK, "lin");
json_object.insert(J_AGE, 20);
json_object.insert(J_ZHUANYE, "ruanjiangc");
// 转换成QByteArray
QByteArray byte_array = QJsonDocument(json_object).toJson();

// 这时候发送byte_array
// 另外一端对byte_array进行解析

// QByteArray转换成QJsonObject
QJsonObject json_object2 = QJsonDocument::fromJson(byte_array).object();
qDebug() << json_object2.value(J_ID).toString();
qDebug() << json_object2.value(J_NICK).toString();
qDebug() << json_object2.value(J_AGE).toInt();
qDebug() << json_object2.value(J_ZHUANYE).toString();

return a.exec();
}





#include "QApplication"
#include "QJsonObject"
#include "QJsonDocument"
#include "QJsonArray"
#include "QDebug"

// JSON格式的前缀
#define J_ID "id"
#define J_NICK "nick"
#define J_ZHUANYE "zhuanye"
#define J_AGE "age"

enum {
TAG_LOGIN,
TAG_LOGIN_OK,
TAG_LOGIN_FAIL,
TAG_REGISTER,
TAG_REGISTER_OK,
TAG_REGISTER_FAIL,
TAG_FIND_BACK
};

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
// MainWindow w;
// w.show();

// 构造QJsonObject(从数据库中读取的时候是在循环里面构造)
QJsonObject json_object;
json_object.insert(J_ID, "1263");
json_object.insert(J_NICK, "lin");
json_object.insert(J_AGE, 20);
json_object.insert(J_ZHUANYE, "ruanjiangc");
QJsonObject json_object2;
json_object2.insert(J_ID, "2345");
json_object2.insert(J_NICK, "jin");
json_object2.insert(J_AGE, 5);
json_object2.insert(J_ZHUANYE, "ruanjiangc");
QJsonObject json_object3;
json_object3.insert(J_ID, "9999");
json_object3.insert(J_NICK, "qiu");
json_object3.insert(J_AGE, 21);
json_object3.insert(J_ZHUANYE, "ruanjiangc");
QJsonObject json_object4;
json_object4.insert(J_ID, "6666");
json_object4.insert(J_NICK, "zhao");
json_object4.insert(J_AGE, 19);
json_object4.insert(J_ZHUANYE, "ruanjiangc");
// 构造QJsonArray
QJsonArray json_array;
json_array.insert(0, TAG_LOGIN);
json_array.insert(1, json_object);
json_array.insert(2, json_object2);
json_array.insert(3, json_object3);
json_array.insert(4, json_object4);
// 转换成QByteArray
QByteArray byte_array = QJsonDocument(json_array).toJson();

// 这时候发送byte_array
// 另外一端对byte_array进行解析

// QByteArray转换成QJsonArray
QJsonArray json_array2 = QJsonDocument::fromJson(byte_array).array();
int tag = json_array2.at(0).toInt();
qDebug() << "tag:" << tag;
for(int i = 1; i <<span style=" color:#c0c0c0;"> json_array2.size(); ++i) {
QJsonObject json = json_array2.at(i).toObject();
qDebug() << json.value(J_ID).toString();
qDebug() << json.value(J_NICK).toString();
qDebug() << json.value(J_AGE).toInt();
qDebug() << json.value(J_ZHUANYE).toString();
}

return a.exec();
}

PS:大家可以自行复制,运行查看运行结果,代码是可以直接运行的(头文件的引号记得换成尖括号,修改是因为新浪的尖括号是无法直接显示的)


PS:大家可以自行复制,运行查看运行结果,代码是可以直接运行的(头文件的引号记得换成尖括号,修改是因为新浪的尖括号是无法直接显示的)

举报

相关推荐

0 条评论