在c語言中模擬http請求并處理返回的json數據可以使用第三方庫cJSON。cJSON是一個輕量級的JSON解析庫,可以通過cJSON_Parse函數解析json數據,通過cJSON_GetObjectItem函數獲取json數據中的具體值。
//引入cJSON庫 #include "cJSON.h" //模擬http請求獲取json數據 char* make_http_request() { //使用curl庫發送http請求 //... return "{ \"name\": \"Alice\", \"age\": 20 }"; } int main() { //模擬http請求獲取json數據 char* json_data = make_http_request(); //解析json數據 cJSON* root = cJSON_Parse(json_data); //獲取json數據中的具體值 cJSON* json_name = cJSON_GetObjectItem(root, "name"); cJSON* json_age = cJSON_GetObjectItem(root, "age"); //輸出獲取的值 printf("name: %s, age: %d\n", json_name->valuestring, json_age->valueint); //釋放內存 cJSON_Delete(root); free(json_data); return 0; }
在以上示例代碼中,make_http_request函數模擬http請求獲取json數據,并返回一個字符串類型的json數據。解析json數據時,使用cJSON_Parse函數將字符串類型的json數據轉換成cJSON對象,然后通過cJSON_GetObjectItem函數獲取json數據中的具體值。
cJSON庫還支持將cJSON對象轉換成字符串類型的json數據,使用cJSON_PrintUnformatted函數無需格式化輸出,使用cJSON_Print函數格式化輸出。
//將cJSON對象轉換成字符串類型的json數據 char* json_str = cJSON_PrintUnformatted(root); //輸出json字符串 printf("json: %s\n", json_str); //釋放內存 cJSON_Delete(root); free(json_str);
以上示例代碼中,使用cJSON_PrintUnformatted函數將cJSON對象轉換成字符串類型的json數據,然后輸出json字符串。注意在使用cJSON_Print函數時需要釋放內存。