在編寫JavaScript程序時,很有可能需要從后端服務器獲取JSON對象數組。在C語言中,可以使用HTTP庫和JSON解析庫來獲取并解析這些JSON數組。
首先,需要使用HTTP庫向服務器發送HTTP請求,并等待服務器響應。在C語言中,可以使用libcurl庫實現HTTP請求。
#include#include int main(void) { CURL *curl; CURLcode res; curl = curl_easy_init(); if(curl) { curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/jsonarray"); res = curl_easy_perform(curl); if(res != CURLE_OK) fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res)); curl_easy_cleanup(curl); } return 0; }
上述代碼中,向curl_easy_setopt()函數傳遞了CURLOPT_URL選項,指定了服務器的URL。調用curl_easy_perform()函數發送HTTP請求,并將響應保存在curl變量中。
接下來,需要使用JSON解析庫將響應解析為JSON數組。在C語言中,可以使用cJSON庫實現JSON解析。
#include#include #include "cJSON.h" int main(void) { CURL *curl; CURLcode res; cJSON *obj; curl = curl_easy_init(); if(curl) { curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/jsonarray"); res = curl_easy_perform(curl); if(res != CURLE_OK) fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res)); else { obj = cJSON_Parse(curl); if (!obj) { printf("Error before: [%s]\n", cJSON_GetErrorPtr()); } else { // 處理JSON數組 cJSON_Delete(obj); } } curl_easy_cleanup(curl); } return 0; }
上述代碼中,使用cJSON_Parse()函數將curl變量中的響應解析為JSON對象。如果解析失敗,會使用cJSON_GetErrorPtr()函數獲取錯誤信息。
最后,可以在處理完JSON數組后使用cJSON_Delete()函數刪除JSON對象。