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函數里不斷地調用自身實現遞歸遍歷。
上一篇vue 頁面全局樣式