今天我想和大家一起分享一下C語言中JSON數組轉字符串數組的方法。在C語言開發中,我們經常會遇到JSON數據的處理,而有時我們需要將一個JSON數組中的元素轉化成字符串數組,下面是具體實現過程。
#include <stdio.h> #include <string.h> #include <jansson.h> int main() { char** str_arr = NULL; //定義字符串數組指針 int size = 0; //字符串數組大小 //設置JSON數據 char* json_str = "{ \"fruit\":[ {\"name\":\"apple\", \"color\":\"red\"}, {\"name\":\"banana\",\"color\":\"yellow\"}, {\"name\":\"orange\", \"color\":\"orange\"} ] }"; json_t* root; json_error_t error; //解析JSON數組 root = json_loads(json_str, 0, &error); int len = json_array_size(json_object_get(root, "fruit")); if (len >0) { // 分配字符串數組的空間 str_arr = (char**)malloc(sizeof(char*) * len); for (int i = 0; i< len; i++) { //解析每個元素獲取值轉成字符串 json_t* value = json_array_get(json_object_get(root, "fruit"), i); char* str = json_dumps(value, JSON_COMPACT | JSON_ENSURE_ASCII | JSON_PRESERVE_ORDER); // 分配空間保存字符串 str_arr[i] = (char*)malloc(sizeof(char) * strlen(str)); strcpy(str_arr[i], str); free(str); size++; } } //輸出轉換后的字符串數組 for (int i = 0; i< size; i++) { printf("%s\n", str_arr[i]); free(str_arr[i]); //釋放空間 } free(str_arr); //釋放空間 return 0; }
在代碼中,我們首先定義并設置JSON數據,使用json_loads解析JSON數組并獲取其大小,動態分配字符串數組空間,再通過循環將JSON數組中的元素解析為字符串并保存在字符串數組中。最后輸出轉換后的字符串數組,并釋放內存空間。