生成Json、解析Json的简单示例

来源:互联网 发布:淘宝极有家投诉电话 编辑:程序博客网 时间:2024/06/10 20:52

QJsonObject类用于封装JSON对象。JSON对象是键值对,其中键是唯一的字符串,其值由QJsonValue代表。一个QJsonObject可以从QVariantMap转换/被转换。QJsonArray类用于封装JSON数组。一个JSON数组列表值。该列表可以通过从阵列插入和移除QJsonValue的操纵。一个QJsonArray可以从QVariantList转换/被转换。


先看下效果:



引用#include <QJsonArray>、#include <QJsonDocument>这两个头文件

1、创建json

    QJsonArray json;
    json.insert(0, QString("Qt"));
    json.insert(1, QString("version"));
    json.insert(2, QString("shazhenyu"));
    json.insert(3, true);

    QJsonDocument document;
    document.setArray(json);
    QByteArray byte_array = document.toJson(QJsonDocument::Compact);
    QString json_str(byte_array);
    ui->label->setText("Create json: \n\n" + json_str + "\n\n\n\n");


2、解析json

    QJsonParseError json_error;
    QJsonDocument parse_doucment = QJsonDocument::fromJson(byte_array, &json_error);
    ui->label->setText(ui->label->text() + "Resolve json: \n\n");
    if(json_error.error == QJsonParseError::NoError)
    {
        if(parse_doucment.isArray())
        {
            QJsonArray array = parse_doucment.array();
            int size = array.size();
            for(int i = 0; i < size; i++)
            {
                ui->label->setText(ui->label->text() + "QJsonArray is " + QString::number(i) + ":");
                QJsonValue value = array.at(i);
                if(value.isString())
                {
                    QString string = value.toString();
                    ui->label->setText(ui->label->text() + string + "\n");
                }
                else if(value.isBool())
                {
                    bool flag = value.toBool();
                    ui->label->setText(ui->label->text() + (flag ? "true" : "false") + "\n");
                }
            }
        }
    }

0 1
原创粉丝点击