C JSON是一種處理JSON格式數據的開源庫。其較好的移植性和速度使其被廣泛使用。
在C語言中,字符串數組可以用字符指針數組來表示。JSON中,可以使用數組數據類型來表示一個字符串數組。那么,我們怎么樣才能在使用C JSON解析JSON格式數據時,正確地解析字符串數組呢?下面就讓我們來看一下代碼:
#include <stdio.h> #include <cjson/cJSON.h> #define MAX_SIZE 1024 int main() { char str[MAX_SIZE] = "{\"name\":\"Tom\",\"hobbies\":[\"reading\",\"swimming\",\"cooking\"]}"; cJSON* root = cJSON_Parse(str); cJSON* hobbies = cJSON_GetObjectItem(root, "hobbies"); int size = cJSON_GetArraySize(hobbies); for (int i = 0; i < size; i++) { cJSON* item = cJSON_GetArrayItem(hobbies, i); char* hobby = cJSON_PrintUnformatted(item); printf("%s\n", hobby); free(hobby); } cJSON_Delete(root); return 0; }
上述代碼中,我們首先定義了一個JSON格式的字符串,并將其解析為cJSON類型的root。接著,我們通過cJSON_GetObjectItem函數獲取到hobbies的cJSON類型的指針hobbies,并使用cJSON_GetArraySize函數獲取到hobbies的元素個數size。然后,我們使用for循環遍歷hobbies中的每一個元素,通過cJSON_GetArrayItem獲取到hobbies中的某一個元素,并使用cJSON_PrintUnformatted函數將其轉換為一個字符串。最后,我們將這個字符串打印出來,并釋放掉這個字符串所占用的內存。
總的來說,解析字符串數組需要使用cJSON_GetArraySize以及cJSON_GetArrayItem這兩個函數。通過這兩個函數,我們可以很方便地獲取到JSON數組大小以及數組中的元素。