C語言中操作JSON數(shù)據(jù)是一件非常常見的事情,而在操作JSON數(shù)據(jù)的過程中,有很多時(shí)候我們只需要取出其中的某些元素的值。那么如何使用C語言從JSON數(shù)據(jù)中取出其中的某些元素的值呢?下面我們來看看具體的操作方法。
#include#include #include #include "cJSON.h" int main() { char *json_str = "{ \"name\": \"John\", \"age\": 30, \"city\": \"New York\" }"; cJSON *root = NULL, *name = NULL, *age = NULL, *city = NULL; root = cJSON_Parse(json_str); if (root == NULL) { printf("JSON格式錯(cuò)誤!\n"); exit(EXIT_FAILURE); } name = cJSON_GetObjectItemCaseSensitive(root, "name"); age = cJSON_GetObjectItemCaseSensitive(root, "age"); city = cJSON_GetObjectItemCaseSensitive(root, "city"); if (cJSON_IsString(name) && (name->valuestring != NULL)) { printf("姓名:%s\n", name->valuestring); } if (cJSON_IsNumber(age)) { printf("年齡:%d\n", age->valueint); } if (cJSON_IsString(city) && (city->valuestring != NULL)) { printf("城市:%s\n", city->valuestring); } cJSON_Delete(root); return 0; }
以上代碼的邏輯比較簡單,首先我們使用 cJSON_Parse() 函數(shù)將 JSON 字符串解析成 cJSON 對(duì)象,然后通過 cJSON_GetObjectItemCaseSensitive() 函數(shù)獲取相應(yīng)的值,最后通過 cJSON_IsString() 和 cJSON_IsNumber() 判斷值的類型。如果是字符串類型,則使用 cJSON_Print() 函數(shù)從 cJSON 對(duì)象中取出該字符串并打印出來,如果是數(shù)字類型,則使用 cJSON_Print() 函數(shù)從 cJSON 對(duì)象中取出該數(shù)字并打印出來。
總結(jié):使用 C 語言從 JSON 數(shù)據(jù)中取出其中的某些元素的值,可以使用 cJSON 庫實(shí)現(xiàn)。 cJSON 庫是一個(gè)輕量級(jí)、可移植的 JSON 解析、生成庫,可以輕松地將 JSON 數(shù)據(jù)解析成 C 結(jié)構(gòu)體,并提供相應(yīng)的函數(shù)方便地訪問其中的元素。