在使用 C 語言時,我們可能需要將一個 JSON 字符串轉換成一個數組對象數組。這時候,我們可以使用一些開源的 JSON 庫,如 cJSON。cJSON 是一個非常輕量級的 JSON 庫,可用于解析和創建 JSON 數據。在下面的代碼示例中,我們將展示如何使用 cJSON 將 JSON 字符串轉換為數組對象數組。
#include#include #include "cJSON.h" int main() { // 測試用 JSON 字符串 char* json_str = "[{\"name\":\"apple\", \"price\":2.5}, {\"name\":\"orange\", \"price\":1.2}]"; // 解析 JSON 字符串 cJSON *json = cJSON_Parse(json_str); if (json == NULL) { printf("解析 JSON 字符串失敗!\n"); return -1; } // 將解析后的 JSON 對象轉換為 JSON 數組 cJSON *array = NULL; array = cJSON_GetArrayItem(json, 0); if (array == NULL) { printf("獲取 JSON 數組失敗!\n"); return -1; } // 遍歷 JSON 數組,取出數組中的每一個元素 cJSON *item = NULL; cJSON_ArrayForEach(item, array) { // 獲取 JSON 對象中的屬性值 cJSON *name = cJSON_GetObjectItem(item, "name"); cJSON *price = cJSON_GetObjectItem(item, "price"); // 輸出屬性值 printf("name: %s, price: %.2f\n", cJSON_GetStringValue(name), price->valuedouble); } // 釋放資源 cJSON_Delete(json); return 0; }
在上面的示例中,我們使用 cJSON_Parse() 函數將 JSON 字符串解析成 cJSON 對象。然后,使用 cJSON_GetArrayItem() 函數獲取 JSON 數組,并使用 cJSON_ArrayForEach() 函數遍歷 JSON 數組,并取出數組中的每一個元素。最后,使用 cJSON_GetObjectItem() 函數獲取 JSON 對象中的屬性值。
要注意的是,在使用 cJSON 庫的過程中,需要根據具體情況來正確地使用 cJSON 提供的函數和宏。否則,可能會導致解析不成功,或者在變量釋放方面出現問題。同時,在實際使用中,我們還需要根據實際情況選擇不同的 JSON 庫,以便更好地滿足項目的需求。