JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,可以輕松地解析和序列化數據。C語言中有許多JSON解析器可以使用,其中最常用的是cJSON。
在C代碼中循環JSON數據需要使用cJSON庫的相關函數。主要分為以下幾步:
cJSON *root = cJSON_Parse(json_data); //將JSON數據解析為根節點 if (root != NULL) { cJSON *item = root->child; //獲取根節點的子節點 while (item != NULL) { //循環處理JSON數據 //可以使用cJSON_GetObjectItem(item, key)函數獲取鍵值對 item = item->next; //指向下一個節點 } }
cJSON_Parse()函數將一個JSON格式的字符串解析為cJSON結構體對象。如果解析失敗,返回NULL。接下來,我們可以使用cJSON_GetObjectItem()函數獲取指定鍵的值,例如:
cJSON *name = cJSON_GetObjectItem(root, "name"); //獲取"name"鍵的值 if (name != NULL && name->type == cJSON_String) { printf("Name: %s\n", name->valuestring); //輸出"name"鍵的值 }
cJSON_GetObjectItem()函數也可以獲取一個JSON對象中的子對象,例如:
cJSON *address = cJSON_GetObjectItem(root, "address"); //獲取"address"鍵的值 if (address != NULL && address->type == cJSON_Object) { cJSON *city = cJSON_GetObjectItem(address, "city"); //獲取"city"鍵的值 if (city != NULL && city->type == cJSON_String) { printf("City: %s\n", city->valuestring); //輸出"city"鍵的值 } }
在處理完cJSON對象后,需要使用cJSON_Delete()函數釋放內存:
cJSON_Delete(root); //釋放cJSON對象內存
總的來說,使用C語言循環JSON數據需要掌握cJSON庫的基本函數和操作方法,才能更好地處理JSON數據。