Qt 构建和解析Json格式数据

文章目录

  • 1、构建json
    • 1.1、构建对象类型json
    • 1.2、构建数组类型json
  • 2、解析json文件

1、构建json

1.1、构建对象类型json

#include 

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

void writeJsonObjToFile()
{
    // 创建一个json对象
    QJsonObject json;

    // 给json对象插入值
    json.insert("name","xiaoxiao");
    json.insert("agr",21);
    json.insert("sex","man");

    // 插入子对象
    QJsonObject subjson;
    subjson.insert("father","父亲");
    subjson.insert("mather","母亲");
    // 子对象作为对象的值
    json.insert("family",subjson);

    // 插入json数组
    QJsonArray jsonArr;
    jsonArr.append(10);
    jsonArr.append("xxxx");
    jsonArr.append(true);
    json.insert("cou",jsonArr);

    // 将QJsonObject转换为QJsonDocument
    QJsonDocument jsonDoc(json);

    // QJsonDocument对象转换为QByteArray对象
    QByteArray byteArray =  jsonDoc.toJson();

    // 写文件
    QFile file("D:\\qt_project\\Qt_Json_1208\\test.json");
    // 打开文件
    file.open(QIODevice::WriteOnly);
    // 写文件
    file.write(byteArray);
    // 关闭文件
    file.close();

    return;
}

Qt 构建和解析Json格式数据_第1张图片

1.2、构建数组类型json

#include 
#include 
#include 
#include 
#include 
#include 
#include 
void writeJsonArryToFile()
{
    // 创建json数组
    QJsonArray arr;
    // 添加子对象
    arr.append(10);
    arr.append("jinyanlong");
    arr.append(true);

    // 添加子数组到arrzhong
    QJsonArray subarr;
    subarr.append("xiaoxiao");
    subarr.append("chiese");
    arr.append(subarr);

    // 添加对象到array中
    QJsonObject subObj;
    subObj.insert("mother","母亲");
    subObj.insert("father","父亲");
    arr.append(subObj);

    QJsonDocument jsonDoc(arr);

    // QJsonDocument对象转换为QByteArray对象
    QByteArray byteArray =  jsonDoc.toJson();

    // 写文件
    QFile file("D:\\qt_project\\Qt_Json_1208\\test_arr.json");
    // 打开文件
    file.open(QIODevice::WriteOnly);
    // 写文件
    file.write(byteArray);
    // 关闭文件
    file.close();

}

Qt 构建和解析Json格式数据_第2张图片

2、解析json文件

解析json文件,一般根据自己的json文件进行写对应的解析函数

#include 
#include 
#include 
#include 
#include 
#include 
#include 
void readJsonFile()
{
    // 构造QFile对象
    QFile file("D:\\qt_project\\Qt_Json_1208\\test.json");
    // 打开文件
    file.open(QIODevice::ReadOnly);
    // 读文件
    QByteArray byteArr = file.readAll();
    // 将QByteArray对象转换为QJsonDocument
    QJsonDocument jsonDoc = QJsonDocument::fromJson(byteArr);

    // 判断是数组函数对象
    if(jsonDoc.isObject())
    {
        QJsonObject jsonObj = jsonDoc.object();
        // 获取对象中的key值
        QStringList keys = jsonObj.keys();

        for(int i=0;i<keys.size();i++)
        {
            // 获取每一个key值
            QString key = keys.at(i);
//            qDebug()<
            // 根据key值获取value值
            QJsonValue jsonValue = jsonObj.value(key);
            // 判断value值类型
            if(jsonValue.isString())
            {
                qDebug()<<key<<":"<<jsonValue.toString();
            }
            else if(jsonValue.isDouble())
            {
                qDebug()<<key<<":"<<jsonValue.toInt();
            }
            else if(jsonValue.isBool())
            {
                qDebug()<<key<<":"<<jsonValue.toBool();
            }
            else if(jsonValue.isObject())
            {   // 子对象
                QJsonObject subobj = jsonValue.toObject();
                QStringList subkeys = subobj.keys();
                qDebug()<<key<<":";
                for(int k=0;k<subkeys.size();k++)
                {
                    QString subkey = subkeys[k];
                    QJsonValue subjsonValue = subobj.value(subkey);
                    qDebug()<<" "<<subjsonValue.toString();

                }
            }
            else if(jsonValue.isArray())
            {   // 子数组
                qDebug()<<key<<":[";
                QJsonArray jsonarr = jsonValue.toArray();
                for(int j=0;j<jsonarr.size();j++)
                {
                    QJsonValue va = jsonarr[j];
                    if(va.isString())
                    {
                        qDebug()<<" "<<va.toString();
                    }
                }
                qDebug()<<"]";
            }
        }

    }
    else if(jsonDoc.isArray())
    {
        QJsonArray jsonArr = jsonDoc.array();
    }

}

你可能感兴趣的:(数据库,json,qt,c++)