QT解析QJsonObject和QJsonArray以及和QByteArray之间的相互转换

在pro中添加 QT += script

解析QJsonObject

#include 
#include 

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

int main(int argc, char *argv[])
{
    QCoreApplication 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();
}

QT解析QJsonObject和QJsonArray以及和QByteArray之间的相互转换_第1张图片

#include 
#include 

// 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[])
{
    QCoreApplication 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");
    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 < 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();
}

你可能感兴趣的:(qt)