在C語言中,我們經常需要使用GET參數傳遞參數,同時,JSON數據類型在Web開發中也越來越常見。那么,如何在C語言中獲取這樣的JSON數據呢?
首先,我們需要使用CURL庫向服務器發送請求,并獲取服務器返回的JSON數據。具體代碼如下:
#include <stdio.h> #include <curl/curl.h> int main() { CURL *curl; CURLcode res; char *url = "http://example.com/api?param1=value1¶m2=value2"; // GET請求中包含參數的URL curl = curl_easy_init(); if (curl) { curl_easy_setopt(curl, CURLOPT_URL, url); // 設置GET請求的URL res = curl_easy_perform(curl); // 發送GET請求 if (res == CURLE_OK) { // 請求成功 char *data; long code; curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &code); // 獲取服務器返回的狀態碼 curl_easy_getinfo(curl, CURLINFO_CONTENT_TYPE, &data); // 獲取服務器返回的數據類型 if (code == 200 && strstr(data, "json")) { // 確認服務器返回的數據是JSON格式 // 此處將服務器返回的JSON數據處理 } } curl_easy_cleanup(curl); // 釋放內存 } return 0; }
在確認服務器返回的數據是JSON格式后,我們可以使用cJSON庫對JSON數據進行解析。cJSON是一個輕量級的JSON解析庫,可以方便地從JSON數據中獲取屬性值。具體代碼如下:
#include <stdio.h> #include <cjson/cJSON.h> int main() { char *json_string = "{\"name\":\"John\", \"age\":30, \"city\":\"New York\"}"; // 假設此處是服務器返回的JSON數據 cJSON *json = cJSON_Parse(json_string); // 解析JSON數據 if(json) { // 解析成功 cJSON *name = cJSON_GetObjectItem(json, "name"); // 獲取名為"name"的屬性值 cJSON *age = cJSON_GetObjectItem(json, "age"); // 獲取名為"age"的屬性值 cJSON *city = cJSON_GetObjectItem(json, "city"); // 獲取名為"city"的屬性值 printf("name: %s\n", name->valuestring); printf("age: %d\n", age->valueint); printf("city: %s\n", city->valuestring); cJSON_Delete(json); // 釋放內存 } return 0; }
以上就是在C語言中獲取參數和解析JSON數據的方法。需要注意的是,本文中使用的CURL和cJSON庫都需要單獨安裝。