C語言中使用第三方庫可以輕松生成JSON格式的數據,并通過POST提交到API接口。該方法可以應用于各種C語言編程場景,包括嵌入式設備。
下面是一個使用C語言生成JSON格式數據并POST提交的例子:
#include <stdio.h> #include <stdlib.h> #include <cjson/cJSON.h> #include <curl/curl.h> int main(void) { CURL *curl; CURLcode response_code; char *url = "http://example.com/api"; char *data; cJSON *root, *name, *age; root = cJSON_CreateObject(); cJSON_AddItemToObject(root, "name", cJSON_CreateString("Tom")); cJSON_AddItemToObject(root, "age", cJSON_CreateNumber(20)); data = cJSON_Print(root); curl = curl_easy_init(); if(curl) { struct curl_slist *headers = NULL; headers = curl_slist_append(headers, "Content-Type: application/json"); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); curl_easy_setopt(curl, CURLOPT_URL, url); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data); response_code = curl_easy_perform(curl); if(response_code != CURLE_OK) fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(response_code)); curl_easy_cleanup(curl); } cJSON_Delete(root); free(data); return 0; }
上面例子中使用了兩個C語言庫:cJSON和libcurl。cJSON可以將數據解析為JSON格式或將JSON格式編碼為C語言數據結構。libcurl用于HTTP通信,支持各種協議、認證方式、代理等。