Qt之简单使用Json

来源:互联网 发布:大数据架构师指南 pdf 编辑:程序博客网 时间:2024/05/22 06:06

关于Qt中的Json的基本知识,可以阅读之前的文档。

Qt之认识JSON


贴上代码:

一、使用QJsonObject:

#include <QApplication>#include <QDebug>#include <QJsonObject>#include <QJsonDocument>int main(int argc, char *argv[]){    QApplication a(argc, argv);    /*生成Json*/    QJsonObject json;    json.insert("name", QString("Qt"));    json.insert("version", 5);    json.insert("windows", true);    QJsonDocument document;    document.setObject(json);    QByteArray byte_array = document.toJson(QJsonDocument::Compact);    QString json_str(byte_array);    qDebug()<<"生成Json:"<<json_str;    /*解析Json*/    QJsonParseError json_error;    QJsonDocument parse_doucment = QJsonDocument::fromJson(byte_array, &json_error);    if(json_error.error == QJsonParseError::NoError)    {        if(parse_doucment.isObject())  //判断是否是对象        {            QJsonObject obj = parse_doucment.object();            if(obj.contains("name"))            {                QJsonValue name_value = obj.take("name");                if(name_value.isString())                {                    QString name = name_value.toString();                    qDebug()<<"name "<<name;                }            }            if(obj.contains("version"))            {                QJsonValue version_value = obj.take("version");                if(version_value.isDouble())                {                    int version = version_value.toVariant().toInt();                    qDebug()<<"version "<<version;                }            }            if(obj.contains("windows"))            {                QJsonValue version_value = obj.take("windows");                if(version_value.isBool())                {                    bool flag = version_value.toBool();                    qDebug()<<"windows "<<flag;                }            }        }    }    return a.exec();}
运行的结果:


二、使用QJsonArray:

#include <QApplication>#include <QDebug>#include <QJsonArray>#include <QJsonValue>#include <QJsonDocument>int main(int argc, char *argv[]){    QApplication a(argc, argv);    /*生成Json*/    QJsonArray json;    json.insert(0, QString("Qt"));    json.insert(1, QString("version"));    json.insert(2, true);    QJsonDocument document;    document.setArray(json);    QByteArray byte_array = document.toJson(QJsonDocument::Compact);    QString json_str(byte_array);    qDebug()<<"生成Json:"<<json_str;    /*解析Json*/    QJsonParseError json_error;    QJsonDocument parse_doucment = QJsonDocument::fromJson(byte_array, &json_error);    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++)            {                QJsonValue value = array.at(i);                if (value.isString())                {                    QString name = value.toString();                    qDebug()<<"数组索引:"<<i<<", name:"<<name;                }                else if (value.isBool())                {                    bool flag = value.toBool();                    qDebug()<<"数组索引:"<<i<<", flag:"<<flag;                }            }        }    }    return a.exec();}

运行结果:


参考了一些知识:http://blog.sina.com.cn/s/blog_a6fb6cc90101gnxm.html


4 0
原创粉丝点击