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

c 遞歸遍歷json

劉姿婷2年前9瀏覽0評論

C語言中可以使用遞歸來遍歷JSON數據結構,這個方法比較簡單,下面我們來介紹具體的步驟。

#include <stdio.h>
#include <string.h>
#include <jansson.h>
void explore(json_t *root){
if (!json_is_array(root) && !json_is_object(root)){
printf("%s\n", json_string_value(root));
return;
}
size_t index;
json_t *value;
if (json_is_array(root)){
json_array_foreach(root, index, value){
explore(value);
}
}
else{
const char *key;
json_object_foreach(root, key, value){
printf("%s:\n", key);
explore(value);
}
}
}
int main(){
const char *data = "{"
"\"name\": \"John\","
"\"age\": 30,"
"\"car\": null,"
"\"pets\": [\"dog\", \"cat\"],"
"\"children\": {\"child1\": \"Tom\", \"child2\": \"Alice\"}"
"}";
json_error_t error;
json_t *root = json_loads(data, 0, &error);
explore(root);
json_decref(root);
return 0;
}

在上述代碼中,在explore函數中先判斷當前節點是不是葉子節點(即不是數組也不是對象),如果是就直接輸出該節點的值。如果當前節點是數組,則使用json_array_foreach()函數進行遍歷;如果當前節點是對象,則使用json_object_foreach()函數進行遍歷。在explore函數里不斷地調用自身實現遞歸遍歷。