C語言作為一門高效的編程語言,常常被用來處理大量數據,包括json格式的數據。在處理json數據時,遍歷json listmap是一項基本的操作。本文將介紹如何使用C語言遍歷json listmap。
#include <stdio.h> #include <jansson.h> int main() { const char *json_string = "{\"key1\": \"value1\", \"key2\": [0, 1, 2], \"key3\": {\"inner_key\": \"inner_value\"}}"; json_t *root; json_error_t error; root = json_loads(json_string, 0, &error); if (!root) { fprintf(stderr, "error: on line %d: %s\n", error.line, error.text); return 1; } const char *key; json_t *value; void *iter = json_object_iter(root); while (iter) { key = json_object_iter_key(iter); value = json_object_iter_value(iter); printf("%s ->", key); if (json_is_object(value)) { printf("(object)\n"); } else if (json_is_array(value)) { printf("(array)\n"); } else if (json_is_string(value)) { printf("(string) %s\n", json_string_value(value)); } else if (json_is_number(value)) { printf("(number) %f\n", json_number_value(value)); } else if (json_is_boolean(value)) { printf("(boolean) %s\n", json_is_true(value) ? "true" : "false"); } else if (json_is_null(value)) { printf("(null)\n"); } else { printf("(unknown type)\n"); } iter = json_object_iter_next(root, iter); } json_decref(root); return 0; }
上述代碼使用了json-c庫來處理json數據。在代碼中,我們先使用json_loads函數將json字符串解析為json_t類型的數據。然后通過json_object_iter來遍歷json數據中的每一個元素,使用json_object_iter_key和json_object_iter_value函數獲取key和value,對不同類型的value進行判斷并輸出。
此外,還要注意使用json_decref函數釋放json_t類型的數據,避免內存泄漏。