栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

Qt生成与解析JSON文件

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Qt生成与解析JSON文件

简述
Qt5 中包含了处理 JSON 的类,均以 QJson 开头(例如:QJsondocument、QJsonArray、QJsonObject),在 QtCore 模块中,不需要额外引入其它模块。

效果:

代码如下:

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#pragma execution_character_set("utf-8")

// 创建json文件
void CreateMyJson()
{
    QFile file(QDir::currentPath() + "/myjson.json");

    if(!file.open(QIODevice::ReadWrite))
    {
        qDebug() << "File open error";
    }

    // 清空文件中的原有内容
    file.resize(0);


    // 添加学校信息
    QJsonObject schoolObject;
    schoolObject.insert("School","北京一中");
    schoolObject.insert("Part", "西城区");
    schoolObject.insert("Class", "三年级");

    // 使用QJsonArray添加学生信息
    QJsonArray personArray;
    for(int i = 0; i < 3; i++)
    {
        QJsonObject personObject;
        personObject.insert("Id", QString::number(i+1));
        personObject.insert("age", "18");
        personObject.insert("ontime", true);
        personObject.insert("time", QDateTime::currentDateTime().toString());
        personArray.append(personObject);
    }


    QJsonArray colorAry;
    colorAry.append(0.8);
    colorAry.append(1.0);
    colorAry.append(0.0);

    // 使用QJsonObject对象插入键值对。
    QJsonObject jsonObject;
    jsonObject.insert("Address", "北京");
    jsonObject.insert("Type", "学校");
    jsonObject.insert("Data", 1998);
    jsonObject.insert("Info", QJsonValue(schoolObject));
    jsonObject.insert("Color", QJsonValue(colorAry));
    jsonObject.insert("Students", QJsonValue(personArray));

    QJsondocument jsonDoc;
    jsonDoc.setObject(jsonObject);

    file.write(jsonDoc.toJson());
    file.close();
}

// 解析json文件
void ParseMyJson()
{
    QFile jsonFile(QDir::currentPath() + "/myjson.json");

    if(!jsonFile.open(QIODevice::ReadOnly))
    {
        qDebug() << "could't open projects json";
        return;
    }

    QByteArray byteArray = jsonFile.readAll();
    jsonFile.close();

    QJsonParseError jsonError;
    QJsondocument doucment = QJsondocument::fromJson(byteArray, &jsonError);  // 转化为 JSON 文档
    if (!doucment.isNull() && (jsonError.error == QJsonParseError::NoError))
    {
        // 解析未发生错误
        if (doucment.isObject())
        {
            // JSON 文档为对象
            QJsonObject object = doucment.object();  // 转化为对象
            if (object.contains("Address"))
            {
                QJsonValue value = object.value("Address");
                if (value.isString())
                {
                    QString strAddress = value.toString();
                    qDebug() << "Address : " << strAddress;
                }
            }

            if (object.contains("Type"))
            {
                QJsonValue value = object.value("Type");
                if (value.isString())
                {
                    QString strType = value.toString();
                    qDebug() << "Type : " << strType;
                }
            }

            if (object.contains("Data"))
            {
                QJsonValue value = object.value("Data");
                if (value.isDouble())
                {
                    int nData = value.toVariant().toInt();
                    qDebug() << "data: " << nData;
                }
            }

            if (object.contains("Color"))
            {
                QJsonValue value = object.value("Color");
                if (value.isArray())
                {
                    QJsonArray array = value.toArray();
                    int nSize = array.size();
                    for (int i = 0; i < nSize; ++i)
                    {
                        QJsonValue value = array.at(i);
                        if (value.isDouble())
                        {
                            double dColor = value.toDouble();
                            qDebug() << "Color" << i << ": " << dColor;
                        }
                    }
                }
            }

            if (object.contains("Info"))
            {
                QJsonValue value = object.value("Info");
                if (value.isObject())
                {
                    QJsonObject obj = value.toObject();
                    if (obj.contains("Class"))
                    {
                        QJsonValue value = obj.value("Class");
                        if (value.isString())
                        {
                            QString strClass = value.toString();
                            qDebug() << "Info:Class : " << strClass;
                        }
                    }

                    if (obj.contains("School"))
                    {
                        QJsonValue value = obj.value("School");
                        if (value.isString())
                        {
                            QString strSchool = value.toString();
                            qDebug() << "Info:School : " << strSchool;
                        }
                    }
                }
            }

            if (object.contains("Students"))
            {
                QJsonValue value = object.value("Students");
                if (value.isArray())
                {
                    QJsonArray array = value.toArray();
                    int nSize = array.size();
                    for (int i = 0; i < nSize; ++i)
                    {
                        QJsonValue childValue = array.at(i);
                        QJsonObject childobj = childValue.toObject();
                        if (childobj.contains("Id"))
                        {
                            QJsonValue value = childobj.value("Id");
                            if (value.isString())
                            {
                                QString strId = value.toString();
                                qDebug() << "Students:" << i << ": Id : " << strId;
                            }
                        }

                        if (childobj.contains("age"))
                        {
                            QJsonValue value = childobj.value("age");
                            if (value.isString())
                            {
                                QString strage = value.toString();
                                qDebug() << "Students:" << i << ": age : " << strage;
                            }
                        }

                    }
                }
            }
        }
    }

}

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    CreateMyJson();

    ParseMyJson();

    return a.exec();
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/783983.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号