使用cJSON_CreateString() 修改json文件中某字符串属性的值并写回文件 实例
时间: 2024-01-22 11:21:34 浏览: 141
假设我们要修改以下 JSON 文件中的 "name" 属性的值:
```json
{
"id": 1,
"name": "John Doe",
"age": 30
}
```
可以使用 cJSON 库进行修改和写回:
```c
#include <stdio.h>
#include <string.h>
#include "cJSON.h"
int main() {
// 读取 JSON 文件
FILE* fp = fopen("example.json", "r");
if (!fp) {
printf("Failed to open file.\n");
return 1;
}
fseek(fp, 0, SEEK_END);
long size = ftell(fp);
fseek(fp, 0, SEEK_SET);
char* buffer = (char*)malloc(size + 1);
fread(buffer, 1, size, fp);
fclose(fp);
// 解析 JSON
cJSON* root = cJSON_Parse(buffer);
if (!root) {
printf("Failed to parse JSON.\n");
free(buffer);
return 1;
}
// 修改 name 属性
cJSON* name = cJSON_GetObjectItem(root, "name");
if (!name) {
printf("Failed to find name attribute.\n");
cJSON_Delete(root);
free(buffer);
return 1;
}
cJSON_ReplaceItemInObject(root, "name", cJSON_CreateString("Jane Doe"));
// 写回 JSON 文件
fp = fopen("example.json", "w");
if (!fp) {
printf("Failed to open file.\n");
cJSON_Delete(root);
free(buffer);
return 1;
}
char* output = cJSON_Print(root);
fwrite(output, 1, strlen(output), fp);
fclose(fp);
cJSON_Delete(root);
free(buffer);
free(output);
printf("JSON file updated.\n");
return 0;
}
```
运行后,JSON 文件将被修改为:
```json
{
"id": 1,
"name": "Jane Doe",
"age": 30
}
```
阅读全文
相关推荐
















