JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,常被用于Web應用程序間的數據交換。在C語言中,我們可以使用第三方庫將JSON文件中的數據讀取出來,然后返回字符串數組。
#include <stdio.h> #include <jansson.h> char **read_json_file(const char *filename) { json_t *root; json_error_t error; root = json_load_file(filename, 0, &error); if(!root) { printf("Error: %s\n", error.text); return NULL; } size_t size = json_array_size(root); char **array = malloc(sizeof(char *) * (size+1)); for(size_t i = 0; i < size; i++) { json_t *val = json_array_get(root, i); const char *str_val = json_string_value(val); array[i] = strdup(str_val); } array[size] = NULL; json_decref(root); return array; } int main() { char **array = read_json_file("data.json"); if(array) { for(int i = 0; array[i]; i++) { printf("%s\n", array[i]); } free(array); } return 0; }
首先我們需要引入jansson項目中的頭文件,該項目為C語言提供了解析JSON數據的方法。我們編寫了一個名為read_json_file的函數,該函數的作用是讀取JSON文件,并返回一個字符串數組。在函數內部,我們先使用json_load_file函數讀取JSON文件,如果讀取失敗,則返回NULL。執行完該函數后,我們使用json_array_size獲取數組元素的個數,然后再使用循環去遍歷JSON數組,將數組中的元素保存到字符串數組中。最后,我們需要記得將字符串數組的最后一項記為NULL,以便在調用該數組的時候能獲取到數組的長度。
在main函數中,我們調用了read_json_file函數讀取JSON文件并將返回值賦給了array。如果讀取成功,則會遍歷字符串數組,并打印輸出每一個元素的值。最后,我們需要記得釋放掉字符串數組的內存。