C語言可以通過第三方庫進行訪問JSON格式化,常用的庫有cjson、jansson等。下面以cjson為例,介紹如何使用C語言訪問JSON數據。
首先需要下載cjson的源碼并編譯。下載鏈接:https://github.com/DaveGamble/cJSON。下載后解壓縮,進入cJSON目錄,使用make命令進行編譯。
$ make $ sudo make install
編譯完成后,在需要使用cjson的程序中加入頭文件和鏈接庫。
#include "cJSON.h" ... gcc test.c -lcjson
接下來就可以愉快地使用cjson訪問JSON數據了。
1. 解析JSON數據
通過cJSON_Parse()函數可以將JSON字符串解析成cJSON結構體。
char *json_str = "{\"name\":\"Tom\",\"age\":23,\"gender\":\"male\"}"; cJSON *root = cJSON_Parse(json_str);
2. 獲取JSON數據
通過cJSON_GetObjectItem()函數可以獲取JSON中的某個屬性值。
cJSON *name = cJSON_GetObjectItem(root, "name"); printf("%s\n", name->valuestring);
3. 遍歷JSON數據
可以通過cJSON_GetArraySize()函數獲取JSON中數組的大小,然后遍歷數組的每個元素。
char *json_str = "{\"students\":[{\"name\":\"Tom\",\"age\":23,\"gender\":\"male\"},{\"name\":\"Jane\",\"age\":22,\"gender\":\"female\"}]}"; cJSON *root = cJSON_Parse(json_str); cJSON *students = cJSON_GetObjectItem(root, "students"); int size = cJSON_GetArraySize(students); for(int i = 0; i< size; ++i) { cJSON *student = cJSON_GetArrayItem(students, i); cJSON *name = cJSON_GetObjectItem(student, "name"); cJSON *age = cJSON_GetObjectItem(student, "age"); cJSON *gender = cJSON_GetObjectItem(student, "gender"); printf("name:%s age:%d gender:%s\n", name->valuestring, age->valueint, gender->valuestring); }
以上就是使用C語言訪問JSON數據的基本操作,希望對大家有所幫助。