JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,由于其易讀性、易解析性等優點,已經被廣泛應用于數據傳輸、配置文件等領域。在C語言中,我們可以使用第三方庫實現JSON的解析和編寫。
在C語言中,有兩個比較常用的JSON解析庫:Jansson和cJSON。其中,cJSON是一個輕量級的JSON解析庫,具有解析速度快、功能簡單、易于使用等優點,非常適合用于嵌入式設備上。
// cJSON解析JSON字符串示例 #include "cJSON.h" #includeint main() { char *json_string = "{\"name\": \"Alice\", \"age\": 18}"; cJSON *json, *child, *subchild; // 解析JSON字符串 json = cJSON_Parse(json_string); if (!json) { printf("Error before: [%s]\n", cJSON_GetErrorPtr()); return -1; } // 獲取JSON對象的值 child = cJSON_GetObjectItem(json, "name"); if (child) { printf("name = %s\n", child->valuestring); } // 獲取JSON中嵌套的對象 child = cJSON_GetObjectItem(json, "email"); if (child) { subchild = cJSON_GetObjectItem(child, "address"); if (subchild) { printf("email address = %s\n", subchild->valuestring); } } // 釋放JSON對象 cJSON_Delete(json); return 0; }
cJSON中常用的函數:
- cJSON_Parse:將JSON字符串解析成JSON對象
- cJSON_Print:將JSON對象打印成JSON字符串
- cJSON_GetObjectItem:獲取JSON對象中指定key的值
- cJSON_GetArraySize:獲取JSON數組的大小
- cJSON_GetArrayItem:獲取JSON數組中指定下標的元素
- cJSON_AddObjectToObject:向JSON對象中添加一個新的對象
- cJSON_AddStringToObject:向JSON對象中添加一個字符串類型的值
在使用cJSON時,需要注意保證JSON字符串的格式正確,否則解析會失敗。同時也需要注意內存管理,確保在使用完畢后及時釋放所申請的內存。
下一篇vue lib文件