欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

C 改寫json文件中的某個值

錢斌斌2年前10瀏覽0評論

針對JSON格式的數(shù)據(jù),我們經常需要對其中的某些值進行修改,而C語言作為一種底層語言,可以方便地實現(xiàn)對JSON文件中某個值的改寫。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <json-c/json.h>
int main()
{
char* str;
char* pos;
struct json_object* root;
struct json_object* value;
enum json_type type;
// 讀入JSON文件內容
FILE* file = fopen("data.json", "r");
if(file == NULL)
{
printf("無法打開JSON文件!\n");
return -1;
}
fseek(file, 0, SEEK_END);
long int file_size = ftell(file);
rewind(file);
str = (char*)malloc(file_size + 1);
fread(str, file_size, 1, file);
str[file_size] = '\0';
fclose(file);
// 解析JSON數(shù)據(jù)并找到需要修改的節(jié)點
root = json_tokener_parse(str);
free(str);
json_object_object_get_ex(root, "name", &value);
type = json_object_get_type(value);
if(type == json_type_string)
{
// 修改節(jié)點的值
str = strdup(json_object_get_string(value));
pos = strstr(str, "John");
if(pos != NULL)
{
strncpy(pos, "Tom", 3);
json_object_set_string(value, str);
}
free(str);
}
// 將修改后的JSON數(shù)據(jù)寫回文件
file = fopen("data.json", "w");
if(file == NULL)
{
printf("無法打開JSON文件!\n");
return -1;
}
fprintf(file, "%s", json_object_to_json_string(root));
fclose(file);
// 釋放內存
json_object_put(root);
return 0;
}

以上代碼中,我們首先讀入JSON文件內容,并使用json_tokener_parse函數(shù)解析JSON數(shù)據(jù),然后找到需要修改的節(jié)點,在此示例中為"name"節(jié)點,并獲取其類型。如果該節(jié)點的類型為字符串類型,則首先將原字符串拷貝到新的內存空間中,然后在該字符串中查找需要替換的值,并將其進行替換,最后調用json_object_set_string函數(shù)修改該節(jié)點的值。最后,我們將修改后的JSON數(shù)據(jù)重新寫回文件。