参考博客:https://blog.csdn.net/xzh_blue/article/details/51723635

1、新建一个qt的工程,然后放上三个按钮,点击按钮就是直接执行写入函数的操作

2、qt中使用JSON,使用的头文件为:

#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
#include <QJsonValue>
#include <QJsonParseError>

3、在3个槽函数中的代码如下:

void MainWindow::on_pushButton_clicked()
{
    //写入键值对的值
    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);//定义一个QJsonDocument的紧凑的输出,使用QJsonDocument::Compact方式写出
    QString json_str(byte_array);//将值转换为QString的格式
    //qDebug()<<"json_str"<<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();//转换为obj类型
            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()<<"flag:"<<flag;
            }
        }
      }
}
}

最后打印出来的值为:

json_str "{\"name\":\"Qt\",\"version\":5,\"windows\":true}"     

name: "Qt"

version: 5

flag: true

4、在按钮2中使用的函数为:

void MainWindow::on_pushButton_2_clicked()
{
    //写入键值对
    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_str2:"<<json_str;

    //读取键值对的值
    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()<<"name:"<<name;
                }else if(value.isBool()){
                    bool flag = value.toBool();//这边就是将bool类型的数输出来
                    qDebug()<<"flag:"<<flag;
               }
        }
    }
}
}

最后打印出来的值为:

json_str2: "[\"Qt\",\"version\",true]"

name: "Qt"

name: "version"

flag: true

5、按钮3中写入的函数为:

void MainWindow::on_pushButton_3_clicked()
{
    //写入键值对的值
    QString name = "张三";
    QString version = "5";
    QJsonObject data;
    data.insert("name",name);
    data.insert("version",version);

    QJsonDocument document;
    document.setObject(data);
    QByteArray byte_array = document.toJson(QJsonDocument::Compact);//定义一个QJsonDocument的紧凑的输出,使用QJsonDocument::Compact方式写出
    QString json_str(byte_array);
    qDebug()<<"111"<<json_str;
}

 

最后打印出来的值为:111 "{\"name\":\"张三\",\"version\":\"5\"}"

使用JSON进行对数据的读写的操作完毕,后期有需要会继续更新

 

 

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐