色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

c json文件追加數據

黃文隆2年前8瀏覽0評論

C語言中常用的JSON庫為 cJSON,它支持從字符串中解析JSON數據和在JSON文件中讀寫數據。下面我們將介紹如何使用cJSON庫在JSON文件中追加數據。

//包含cJSON頭文件
#include "cJSON.h"
int main(void) {
//打開JSON文件
FILE* fp = fopen("./data.json", "r+");
if (!fp) {
printf("Open file failed.\n");
return -1;
}
//獲取文件長度
fseek(fp, 0, SEEK_END);
long length = ftell(fp);
//讀取文件內容
fseek(fp, 0, SEEK_SET);
char* buffer = (char*) malloc(sizeof(char) * (length+1));
fread(buffer, 1, length, fp);
buffer[length] = '\0';
//解析JSON數據
cJSON* root = cJSON_Parse(buffer);
if (!root) {
printf("Parse JSON data failed: %s\n", cJSON_GetErrorPtr());
fclose(fp);
return -1;
}
//創建新的JSON對象
cJSON* newNode = cJSON_CreateObject();
cJSON_AddStringToObject(newNode, "name", "張三");
cJSON_AddNumberToObject(newNode, "age", 20);
cJSON_AddStringToObject(newNode, "email", "zhangsan@example.com");
//獲取節點數組
cJSON* nodeArray = cJSON_GetObjectItem(root, "users");
//將新對象添加到節點數組中
cJSON_AddItemToArray(nodeArray, newNode);
//將修改后的JSON數據寫入文件
fseek(fp, 0, SEEK_SET);
char* output = cJSON_Print(root);
fwrite(output, 1, strlen(output), fp);
//釋放內存并關閉文件
free(buffer);
free(output);
cJSON_Delete(root);
fclose(fp);  
return 0;
}

代碼中首先打開JSON文件,然后讀取文件內容并解析JSON數據。接著創建一個新的JSON對象,設置對象的鍵值對,然后獲取JSON文件中的節點數組,在其中添加新的JSON對象。最后將修改后的JSON數據重新寫入文件。

cJSON庫不僅可以在JSON文件中讀寫數據,還支持在內存中創建JSON數據并將其轉換為JSON字符串進行傳輸。對于需要使用JSON數據的應用程序來說,這將極大地簡化開發流程。