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

来自:https://blog.csdn.net/qq1263292336/article/details/50379317


#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:大家可以自行复制,运行查看运行结果,代码是可以直接运行的(头文件的引号记得换成尖括号,修改是因为新浪的尖括号是无法直接显示的)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值