C 后臺開發常常需要將 JSON 數據解析為數組,以便進行后續的處理。這里我們將介紹一種常見的方法。
在 C 語言中,我們可以使用 cJSON 庫來方便地解析 JSON 數據。下面我們先看一下 cJSON 庫的使用方法。
// 例子: #include <stdio.h> #include <cJSON.h> int main() { // 解析 JSON 數據 char *json_str = "{\"name\":\"Alice\",\"age\":18}"; cJSON *json = cJSON_Parse(json_str); if (json == NULL) { printf("Error: JSON parse failed!\n"); return 1; } // 獲取 JSON 對象中的數據 cJSON *name = cJSON_GetObjectItemCaseSensitive(json, "name"); cJSON *age = cJSON_GetObjectItemCaseSensitive(json, "age"); printf("name: %s, age: %d\n", name->valuestring, age->valueint); // 釋放資源 cJSON_Delete(json); return 0; }
在這個例子中,我們首先定義了一個 JSON 字符串,用于測試代碼。接著調用 cJSON_Parse 函數將其解析為 cJSON 對象。如果解析失敗,則返回 NULL。否則,我們就可以通過 cJSON_GetObjectItemCaseSensitive 函數來獲取 JSON 對象中的屬性值。
接下來,我們將在上面的基礎上實現將 JSON 數組解析為數組的功能。
// 例子: #include <stdio.h> #include <cJSON.h> int main() { // 解析 JSON 數組 char *json_arr_str = "[\"Alice\", \"Bob\", \"Cathy\"]"; cJSON *json_arr = cJSON_Parse(json_arr_str); if (json_arr == NULL) { printf("Error: JSON parse failed!\n"); return 1; } // 獲取 JSON 數組中的元素 int len = cJSON_GetArraySize(json_arr); const char *names[len]; for (int i = 0; i< len; ++i) { cJSON *name = cJSON_GetArrayItem(json_arr, i); names[i] = name->valuestring; } // 打印結果 for (int i = 0; i< len; ++i) { printf("name[%d]: %s\n", i, names[i]); } // 釋放資源 cJSON_Delete(json_arr); return 0; }
在這個例子中,我們首先定義了一個 JSON 數組字符串,然后調用 cJSON_Parse 函數將其解析為 cJSON 對象。如果解析失敗,則返回 NULL。否則,我們可以通過 cJSON_GetArraySize 函數來獲取 JSON 數組的元素個數,然后通過 cJSON_GetArrayItem 函數來獲取 JSON 數組中的每個元素。最后,我們將元素值存儲到一個常量指針數組中,以便后續的處理。
這里需要注意的是,cJSON_GetArrayItem 函數返回的是一個 cJSON 對象,因此需要使用 valuestring 屬性來獲取字符串元素的值。
到此為止,我們已經成功將 JSON 數組解析為數組了。當然,如果您需要解析更加復雜的 JSON 數據,也可以通過 cJSON 庫提供的其他函數來實現。希望這篇文章對您有幫助!
下一篇vue dubbo