C JSON是一種輕量級的數據交換格式,通常用于鍵值對的存儲。在C語言中,我們可以使用第三方庫解析和操作這些JSON文件。本篇文章將介紹如何遍歷C JSON字典。
遍歷C JSON字典通常需要使用到遞歸函數。下面的代碼展示了如何使用遞歸函數遍歷一個C JSON字典:
void json_print(json_object *jobj) { enum json_type type; json_object_object_foreach(jobj, key, val) { type = json_object_get_type(val); if (type == json_type_object) { printf("%s: \n", key); json_print(val); } else if (type == json_type_array) { printf("%s: \n", key); for (int i = 0; i< json_object_array_length(val); i++) { json_object *arrayObj = json_object_array_get_idx(val, i); json_print(arrayObj); } } else { printf("%s: %s\n", key, json_object_to_json_string(val)); } } }
在上面的代碼中,我們定義了一個json_print函數,用于遍歷C JSON字典。該函數的參數為要遍歷的JSON對象。在函數中,我們使用json_object_object_foreach函數遍歷字典中的所有鍵值對。若值為JSON對象,則遞歸調用json_print函數進行遍歷;若值為JSON數組,則使用json_object_array_length和json_object_array_get_idx函數進行遍歷;否則直接輸出鍵值對。
下面是一個使用上述json_print函數遍歷JSON字典的示例代碼:
#include <stdio.h> #include <json-c/json.h> int main() { char *json_str = "{\"name\": \"Tom\", \"age\": 25, \"address\": {\"city\":\"Beijing\",\"country\":\"China\"}, \"phone\": [\"10086\", \"10000\"]}"; json_object *jobj = json_tokener_parse(json_str); json_print(jobj); return 0; }
在上述示例代碼中,我們首先定義了一個JSON字符串,然后用json_tokener_parse函數將其轉換為JSON對象。最后調用json_print函數遍歷字典。輸出的結果如下:
name: Tom age: 25 address: city: Beijing country: China phone: 0: 10086 1: 10000
本文介紹了如何使用C語言中的第三方JSON庫遍歷C JSON字典。通過遞歸函數的方式,我們可以輕松地遍歷字典中的所有鍵值對,為我們后續的操作提供了方便。