C語言在獲取JSON返回值時,可以使用第三方庫,例如cJSON庫。
#include <stdio.h> #include <cJSON.h> int main() { char *json_string = "{\"name\": \"John\", \"age\": 30, \"city\": \"New York\"}"; cJSON *json = cJSON_Parse(json_string); if (json == NULL) { const char *error_ptr = cJSON_GetErrorPtr(); if (error_ptr != NULL) { fprintf(stderr, "Error before: %s\n", error_ptr); } exit(EXIT_FAILURE); // 解析JSON失敗 } cJSON *name = cJSON_GetObjectItemCaseSensitive(json, "name"); char *name_value = cJSON_GetStringValue(name); cJSON *age = cJSON_GetObjectItemCaseSensitive(json, "age"); int age_value = age->valueint; cJSON *city = cJSON_GetObjectItemCaseSensitive(json, "city"); char *city_value = cJSON_GetStringValue(city); printf("Name: %s\nAge: %d\nCity: %s\n", name_value, age_value, city_value); cJSON_Delete(json); return 0; }
首先,需要傳入JSON字符串到cJSON_Parse函數(shù)中進(jìn)行解析。解析成功后,可以根據(jù)JSON鍵名使用cJSON_GetObjectItemCaseSensitive獲取對應(yīng)JSON值的指針。通過cJSON_GetStringValue函數(shù)獲取字符串類型的值,通過valueint獲取整數(shù)類型的值。
使用完畢后需要通過cJSON_Delete函數(shù)釋放分配給JSON的內(nèi)存。