Qt 操作Json格式文件(创建、插入、解析、修改、删除)
时间: 2023-07-10 20:09:37 浏览: 148
Qt 提供了 QJsonDocument,QJsonObject,QJsonArray 等类来操作 Json 格式文件。
以下是一些基本的操作:
1. 创建 Json:
```cpp
QJsonObject jsonObj;
jsonObj.insert("name", "张三");
jsonObj.insert("age", 20);
QJsonDocument jsonDoc(jsonObj);
```
2. 解析 Json:
```cpp
QJsonParseError jsonError;
QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonStr.toUtf8(), &jsonError);
if (jsonError.error != QJsonParseError::NoError) {
qDebug() << "Json 解析失败: " << jsonError.errorString();
return;
}
QJsonObject jsonObj = jsonDoc.object();
QString name = jsonObj.value("name").toString();
int age = jsonObj.value("age").toInt();
```
3. 插入 Json:
```cpp
QJsonObject jsonObj;
jsonObj.insert("name", "张三");
jsonObj.insert("age", 20);
QJsonArray jsonArray;
jsonArray.append(jsonObj);
QJsonObject jsonRoot;
jsonRoot.insert("persons", jsonArray);
QJsonDocument jsonDoc(jsonRoot);
```
4. 修改 Json:
```cpp
QJsonObject jsonObj;
jsonObj.insert("name", "张三");
jsonObj.insert("age", 20);
QJsonDocument jsonDoc(jsonObj);
// 修改 name 属性
jsonObj.insert("name", "李四");
jsonDoc.setObject(jsonObj);
```
5. 删除 Json:
```cpp
QJsonObject jsonObj;
jsonObj.insert("name", "张三");
jsonObj.insert("age", 20);
QJsonDocument jsonDoc(jsonObj);
// 删除 age 属性
jsonObj.remove("age");
jsonDoc.setObject(jsonObj);
```
需要注意的是:以上的操作都是基于 QJsonDocument 类型的 Json 对象进行的。在进行操作之前,需要先把 Json 字符串转成 QJsonDocument,然后再通过 QJsonDocument 转成 QJsonObject 或 QJsonArray 对象进行操作。最后再把 QJsonObject 或 QJsonArray 对象通过 QJsonDocument 转成 Json 字符串。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)