JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,易于閱讀和編寫。在現代計算機應用程序中,JSON被廣泛用于數據交換和存儲。而C語言解析JSON數據格式是一項重要的技能。
下面我們來看一個例子:
{ "name":"John", "age":30, "city":"New York", "skills":["C", "Java", "Python"] }
在C語言中解析JSON數據格式需要使用庫文件,推薦使用CJSON庫。我們來看一個使用CJSON庫解析上面例子的程序:
#include <stdio.h> #include <cjson/cJSON.h> int main() { char *json_str = "{ \"name\":\"John\", \"age\":30, \"city\":\"New York\", \"skills\":[\"C\", \"Java\", \"Python\"] }"; cJSON *root = cJSON_Parse(json_str); cJSON *name = cJSON_GetObjectItemCaseSensitive(root, "name"); cJSON *age = cJSON_GetObjectItemCaseSensitive(root, "age"); cJSON *city = cJSON_GetObjectItemCaseSensitive(root, "city"); cJSON *skills = cJSON_GetObjectItemCaseSensitive(root, "skills"); printf("Name: %s\n", cJSON_GetStringValue(name)); printf("Age: %d\n", cJSON_GetNumberValue(age)); printf("City: %s\n", cJSON_GetStringValue(city)); printf("Skills: "); cJSON_ArrayForEach(skills_item, skills) { printf("%s ", cJSON_GetStringValue(skills_item)); } printf("\n"); cJSON_Delete(root); return 0; }
以上程序使用了cJSON_Parse函數解析JSON字符串,然后通過cJSON_GetObjectItemCaseSensitive函數獲取Object中的每一個值,最后通過cJSON_GetStringValue和cJSON_GetNumberValue函數獲取具體的值。
需要注意的是,我們使用了cJSON_ArrayForEach函數來遍歷Skills Array中的各個元素。
總之,使用C語言解析JSON數據格式是一項很有用的技能,掌握它可以為我們編寫更加高效、靈活的計算機應用程序提供便利。