cJSON_CreateString 修改json文件中某属性的值并写回文件 实例
时间: 2024-01-22 14:21:33 浏览: 260
以下是一个简单的示例,演示如何使用cJSON库修改JSON文件中某个属性的值并将其写回文件中。假设我们有一个名为“test.json”的JSON文件,它具有以下内容:
```
{
"name": "John",
"age": 30,
"city": "New York"
}
```
现在,我们想要将“age”属性的值更改为“35”。下面是代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include "cJSON.h"
int main() {
// 读取JSON文件
FILE *fp = fopen("test.json", "r");
if (fp == NULL) {
printf("无法打开文件\n");
return 1;
}
fseek(fp, 0L, SEEK_END);
int size = ftell(fp);
rewind(fp);
char *json_str = (char*) malloc(size + 1);
fread(json_str, 1, size, fp);
fclose(fp);
// 解析JSON字符串
cJSON *root = cJSON_Parse(json_str);
if (root == NULL) {
printf("解析JSON字符串失败\n");
return 1;
}
// 获取“age”属性的值并将其更改为35
cJSON *age = cJSON_GetObjectItem(root, "age");
age->valueint = 35;
// 将JSON结构体转换为字符串
char *new_json_str = cJSON_Print(root);
// 将新的JSON字符串写回到文件中
fp = fopen("test.json", "w");
if (fp == NULL) {
printf("无法打开文件\n");
return 1;
}
fwrite(new_json_str, strlen(new_json_str), 1, fp);
fclose(fp);
// 释放内存
free(json_str);
free(new_json_str);
cJSON_Delete(root);
return 0;
}
```
在上述代码中,我们首先打开“test.json”文件并读取其内容。然后,我们使用cJSON_Parse函数将JSON字符串解析为cJSON对象。接下来,我们获取“age”属性的值并将其更改为35。最后,我们使用cJSON_Print函数将修改后的JSON对象转换为字符串,并将其写回到文件中。
注意,这仅是一个简单的示例,实际应用中可能需要进行更多的错误检查和内存管理。
阅读全文