C語言的JSON庫有很多種,比較常見近幾年比較流行的有cJSON和jansson。在處理JSON數據時,常常會遇到需要解析數組的情況。下面我們就來介紹一下如何使用cJSON庫來解析JSON數組。
首先,我們需要將JSON字符串轉換成cJSON對象。假設我們有以下的JSON字符串:
{ "fruits": [ { "name": "apple", "color": "red" }, { "name": "banana", "color": "yellow" } ] }
我們可以使用cJSON_Parse函數將其轉換成cJSON對象:
cJSON *root = cJSON_Parse(json_string);
現在,我們已經可以通過cJSON_GetObjectItem函數來獲取fruits數組了:
cJSON *fruits = cJSON_GetObjectItem(root, "fruits");
接下來,我們遍歷這個數組中的每一個元素。我們可以使用cJSON_GetArraySize函數獲取數組的大小,然后用for循環來進行遍歷:
int i; for (i = 0; i< cJSON_GetArraySize(fruits); i++) { cJSON *fruit = cJSON_GetArrayItem(fruits, i); char *name = cJSON_GetObjectItem(fruit, "name")->valuestring; char *color = cJSON_GetObjectItem(fruit, "color")->valuestring; printf("Fruit %d: %s (%s)\n", i+1, name, color); }
在遍歷的過程中,我們先使用cJSON_GetArrayItem函數獲取數組中的當前元素,然后使用cJSON_GetObjectItem函數獲取當前元素中的屬性。
完整的代碼如下所示:
#include#include "cJSON.h" int main() { char *json_string = "{ \"fruits\": [ {\"name\": \"apple\", \"color\": \"red\"}, {\"name\": \"banana\", \"color\": \"yellow\"} ] }"; cJSON *root = cJSON_Parse(json_string); cJSON *fruits = cJSON_GetObjectItem(root, "fruits"); int i; for (i = 0; i< cJSON_GetArraySize(fruits); i++) { cJSON *fruit = cJSON_GetArrayItem(fruits, i); char *name = cJSON_GetObjectItem(fruit, "name")->valuestring; char *color = cJSON_GetObjectItem(fruit, "color")->valuestring; printf("Fruit %d: %s (%s)\n", i+1, name, color); } return 0; }
此時運行程序,輸出結果如下:
Fruit 1: apple (red) Fruit 2: banana (yellow)
以上就是使用cJSON庫解析JSON數組的過程,希望對大家有所幫助。