在C語言的開發中,有時會涉及到將JSON文件中的內容轉換成字符串數組的需求。這里我們可以使用開源庫 cJSON 來方便地實現這個功能。
cJSON *root = NULL; char *data = NULL; FILE *fp; int file_size; //打開JSON文件 fp = fopen("test.json", "rb"); if(fp != NULL) { fseek(fp, 0, SEEK_END); file_size = ftell(fp); fseek(fp, 0, SEEK_SET); data = (char*)malloc(file_size + 1); memset(data, 0, file_size + 1); fread(data, 1, file_size, fp); fclose(fp); } //解析JSON數據 root = cJSON_Parse(data); //將JSON數據轉化為字符串數組 int array_size = cJSON_GetArraySize(root); char **str_array = (char**)malloc(array_size * sizeof(char*)); for(int i = 0; i< array_size; i++) { cJSON *item = cJSON_GetArrayItem(root, i); str_array[i] = cJSON_PrintUnformatted(item); } //釋放內存 cJSON_Delete(root); free(data); for(int i = 0; i< array_size; i++) { free(str_array[i]); } free(str_array);
代碼中首先用 fopen 函數打開 JSON 文件,并通過 fseek 和 ftell 確定文件大小,再使用 malloc 分配數據存儲空間,最后通過 fread 函數讀入文件內容。接著,通過 cJSON_Parse 函數將 JSON 數據解析出來,并通過 cJSON_GetArraySize 函數獲取數組大小,再通過 cJSON_GetArrayItem 函數將數組項取出來,并轉化為字符串形式,保存在動態二維數組 str_array 中。最后需要釋放內存,包括 cJSON_Parse 函數返回的指針、文件內容的指針、動態二維數組的每一個元素指針和指向動態二維數組的指針。
上一篇python 數字轉串
下一篇python 讀取重復值