C語言作為一門低級編程語言,其默認并不支持JSON格式的數(shù)據(jù)處理,因此在獲取接口時需要使用第三方庫來解析JSON數(shù)據(jù)。下面介紹如何使用c獲取接口json數(shù)據(jù):
#include <stdio.h> #include <string.h> #include <jansson.h> int main() { char* url = "http://api.weather.com/weather.json?"; char* param = "city=Beijing&country=China&units=metric"; char buf[1024] = {0}; sprintf(buf, "%s%s", url, param); // 拼接請求參數(shù) // 發(fā)送HTTP請求獲取接口數(shù)據(jù),此處省略 json_error_t err; json_t* root; root = json_loads(buf, 0, &err); // 解析JSON數(shù)據(jù) if(!root) { fprintf(stderr, "解析JSON數(shù)據(jù)失敗,錯誤信息:%s\n", err.text); return 0; } // 解析JSON數(shù)據(jù)并輸出 json_t* temp = json_object_get(root, "temp"); double temp_value = json_number_value(temp); printf("溫度:%f\n", temp_value); json_t* humidity = json_object_get(root, "humidity"); int humidity_value = json_integer_value(humidity); printf("濕度:%d\n", humidity_value); json_t* date = json_object_get(root, "date"); char* date_value = json_string_value(date); printf("日期:%s\n", date_value); json_decref(root); return 0; }
以上代碼演示了如何通過c語言獲取一個氣象數(shù)據(jù)的接口數(shù)據(jù),其中使用到了json-c庫來解析JSON數(shù)據(jù),并且通過json_object_get()函數(shù)獲取JSON數(shù)據(jù)中的字段值。處理完畢后需要記得調(diào)用json_decref()函數(shù)釋放內(nèi)存。