欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

C遞歸查詢json

錢艷冰1年前8瀏覽0評論

在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文件能夠簡化代碼,提高代碼的可重用性和可讀性。