色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

c json 遍歷字典

錢斌斌2年前9瀏覽0評論

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字典。通過遞歸函數的方式,我們可以輕松地遍歷字典中的所有鍵值對,為我們后續的操作提供了方便。