C是一門廣泛使用的編程語言,在處理JSON數據方面有著強大的能力。在本篇文章中,我們將探討如何使用C將JSON轉換成樹結構。
#include <stdio.h> #include <string.h> #include <jansson.h> void build_tree(json_t *json_object){ int key_count = json_object_size(json_object); const char *key; json_t *value; json_object_foreach(json_object, key, value) { printf("%s\n", key); if (json_is_object(value)) { build_tree(value); } else if (json_is_array(value)) { size_t arr_size = json_array_size(value); for (int i = 0; i < arr_size; i++) { build_tree(json_array_get(value, i)); } } else { printf("%s : ", key); if (json_is_string(value)) { printf("%s\n", json_string_value(value)); } else if (json_is_integer(value)) { printf("%ld\n", json_integer_value(value)); } else if (json_is_boolean(value)) { printf("%d\n", json_boolean_value(value)); } else if (json_is_null(value)) { printf("null\n"); } } } } int main() { const char *json_string = "{ \"name\":\"John\", \"age\":30, \"car\":null, \"pets\":[\"dog\", \"cat\", \"bird\"], \"contacts\": { \"email\":\"john@example.com\", \"phone\":\"1234567890\" } }"; json_error_t error; json_t *json_object = json_loads(json_string, 0, &error); build_tree(json_object); json_decref(json_object); return 0; }
在上述代碼中,我們首先使用jansson庫來解析JSON字符串。然后,我們使用遞歸函數來遍歷每個鍵值對并打印它們。如果值是對象或數組,我們將遞歸下去,并繼續遍歷其它鍵值對。如果值是字符串、布爾值、整數或null,我們將它們打印出來。
這樣,我們就可以將一個JSON字符串轉換成一個樹結構,方便地對JSON數據進行處理和分析。