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"