色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

c post json and解析

榮姿康2年前9瀏覽0評論

在C語言中,要POST一個JSON數據并解析返回結果可以使用libcurl和cJSON這兩個庫。

首先,我們需要用libcurl來POST一個JSON數據,代碼如下:

CURL *curl;
CURLcode res;
curl_global_init(CURL_GLOBAL_ALL);
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://localhost:8080/api");
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "{\"name\":\"John Smith\",\"age\":21,\"city\":\"New York\"}");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, "Content-Type:application/json");
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);
}
curl_global_cleanup();

這里我們使用了curl_easy_setopt()函數來設置POST數據和HTTP頭,然后使用curl_easy_perform()函數執行POST請求。

接著,我們需要用cJSON來解析服務器返回的JSON數據,代碼如下:

char *data = NULL;
cJSON *json = NULL;
cJSON *name = NULL;
cJSON *age = NULL;
cJSON *city = NULL;
long data_size;
data = curl_easy_getinfo(curl, CURLINFO_PRIVATE, &data_size);
if(data) {
json = cJSON_Parse(data);
if(!json)
printf("Error before: [%s]\n", cJSON_GetErrorPtr());
else {
name = cJSON_GetObjectItemCaseSensitive(json, "name");
printf("Name: %s\n", name->valuestring);
age = cJSON_GetObjectItemCaseSensitive(json, "age");
printf("Age: %d\n", age->valueint);
city = cJSON_GetObjectItemCaseSensitive(json, "city");
printf("City: %s\n", city->valuestring);
}
}

這里我們使用了curl_easy_getinfo()函數來獲取服務器返回的JSON數據,然后使用cJSON_Parse()函數解析JSON數據,最后使用cJSON_GetObjectItemCaseSensitive()函數獲取JSON數據中的字段。