JSON文件读写

1、依赖文件

#include 
#include 
#include 
#include 
#include 

2、头文件

bool ReadJsonFile(const QString& filePath="");
bool WriteJsonFile(const QString& filePath="");

3、源文件

bool Widget::ReadJsonFile(const QString& filePath/*=""*/)
{
    // 读取JSON文件
    QFile file("data.json");
    if (!file.open(QIODevice::ReadOnly)) 
    {
        qDebug() << "Failed to open JSON file.";
        return false;
    }
    QByteArray jsonData = file.readAll();
    file.close();
    
    // 解析JSON数据
    QJsonParseError parseError;
    QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonData, &parseError);
    if (parseError.error != QJsonParseError::NoError) 
    {
        qDebug() << "Failed to parse JSON:" << parseError.errorString();
        return false;
    }
    
    // 获取根对象
    QJsonObject jsonObj = jsonDoc.object();
    
    // 读取JSON数据
    QString name = jsonObj["name"].toString();
    int age = jsonObj["age"].toInt();
    
    qDebug() << "name:" << name;
    qDebug() << "age:" << age;
    
    QJsonObject jsonSubObj = jsonObj["hobbies"].toObject();
    QString type1 = jsonSubObj["type1"].toString();
    QString type2 = jsonSubObj["type2"].toString();
    
    qDebug() << "type1:" << type1;
    qDebug() << "type2:" << type2;

    return true;
}
bool Widget::WriteJsonFile(const QString& filePath/*=""*/)
{
    // 创建 JSON 对象
    QJsonObject jsonObj;
    jsonObj["name"] = "JSON";
    jsonObj["age"] = 20;
    
    QJsonObject jsonSubObj;
    jsonSubObj["type1"] = "Reading";
    jsonSubObj["type2"] = "Music";
    jsonObj["hobbies"] = jsonSubObj;
    
    // 将 JSON 对象转换为 JSON 文档
    QJsonDocument jsonDoc(jsonObj);
    
    // 将 JSON 文档转换为 JSON 字符串
    QByteArray jsonData = jsonDoc.toJson();
    
    // 写入 JSON 字符串到文件
    QFile file("data.json");
    if (file.open(QIODevice::WriteOnly | QIODevice::Text)) 
    {
        file.write(jsonData);
        file.close();
        qDebug() << "JSON data written to file successfully.";
    } 
    else
    {
        qDebug() << "Failed to open file for writing.";
    }
    
    return true;
}

4、执行结果

name: "JSON"
age: 20
type1: "Reading"
type2: "Music"

你可能感兴趣的:(Qt,编程,json,qt,c++,vs)