在C語言中,我們可以使用遞歸的方式來查詢JSON文件。為方便起見,我們可以使用一個開源的JSON解析庫 cJSON,它支持從字符串、文件或指針中解析JSON對象。
cJSON *json = cJSON_Parse(jsonString); // 解析json字符串 cJSON *obj = cJSON_GetObjectItemCaseSensitive(json, "name"); // 獲取指定鍵名的值
當我們需要查詢JSON文件中的多層嵌套數據時,遞歸是一種非常優越的解決方案,代碼如下:
void search(cJSON *json, char *key) { if (json == NULL) return; // 空指針直接返回 if (cJSON_IsArray(json)) { // 如果是數組 int size = cJSON_GetArraySize(json); // 獲取數組長度 for (int i = 0; i< size; i++) { cJSON * sub = cJSON_GetArrayItem(json, i); // 獲取子項 search(sub, key); // 遞歸調用 } } else if (cJSON_IsObject(json)) { // 如果是對象 cJSON * obj = cJSON_GetObjectItemCaseSensitive(json, key); // 查詢鍵名 if (obj) { // 如果存在 char * value = cJSON_Print(obj); // 打印值 printf("%s\n", value); cJSON_free(value); return; } else { // 否則遞歸查詢子項 cJSON_ArrayForEach(sub, json) { search(sub, key); } } } }
上面的代碼中,我們首先判斷是數組還是對象,如果是數組,則遞歸查詢每個子項;如果是對象,則先查詢指定鍵名的值,若存在則直接輸出,否則遞歸查詢子項。
使用遞歸查詢JSON文件能夠簡化代碼,提高代碼的可重用性和可讀性。
上一篇c遍歷json數組對象
下一篇vue 需要重新渲染