在使用C語(yǔ)言編程時(shí),經(jīng)常需要使用API返回JSON數(shù)據(jù)進(jìn)行后續(xù)處理。而解析JSON數(shù)據(jù),則需要使用JSON解析庫(kù),如cJSON。
#include <stdio.h> #include <cJSON.h> int main() { char* json_str = "{ \"name\": \"John Smith\", \"age\": 28 }"; // 從字符串中解析JSON數(shù)據(jù) cJSON* root = cJSON_Parse(json_str); // 獲取"name"字段的值 cJSON* name = cJSON_GetObjectItem(root, "name"); printf("Name: %s\n", name->valuestring); // 獲取"age"字段的值 cJSON* age = cJSON_GetObjectItem(root, "age"); printf("Age: %d\n", age->valueint); // 釋放內(nèi)存 cJSON_Delete(root); return 0; }
如上面的示例所示,我們首先聲明一個(gè)JSON字符串,然后使用cJSON_Parse解析該字符串,得到一個(gè)JSON對(duì)象root。接著,我們使用cJSON_GetObjectItem獲取"name"字段和"age"字段的值,并打印出來(lái)。最后,我們使用cJSON_Delete釋放內(nèi)存。
除了從字符串中解析JSON數(shù)據(jù)外,我們還可以從文件中解析JSON數(shù)據(jù),如下所示:
cJSON* root = cJSON_ParseFromFile("data.json", "r");
其中,"data.json"是包含JSON數(shù)據(jù)的文件名。
總之,在C語(yǔ)言中解析JSON數(shù)據(jù)并不復(fù)雜,只需要使用JSON解析庫(kù)即可輕松實(shí)現(xiàn)。