欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

c json 遞歸 取值

劉柏宏2年前9瀏覽0評論

C語言中使用JSON遞歸取值操作,可以有效地實現對JSON數據的解析和處理。下面將詳細介紹如何使用C語言遞歸取值JSON數據。

首先,我們需要引用一個JSON庫,例如cJSON。在代碼中使用該庫解析JSON數據,并獲取相應的數據節點,然后使用遞歸函數對節點進行遍歷。

cJSON *json;
// 使用cJSON庫解析JSON數據,獲取根節點
json = cJSON_Parse("{"name":"John","age":30,"city":"New York","address":{"street":"5th Avenue","number":123}}");
if (json == NULL) {
printf("Error: Invalid JSON data."\n");
return 1;
}
// 對根節點進行遞歸遍歷
traverse_json(json);
// 釋放內存
cJSON_Delete(json);
// 遞歸遍歷JSON數據節點
void traverse_json(cJSON *node) {
if (node == NULL) {
return;
}
// 獲取節點類型
switch (node->type) {
case cJSON_NULL:
printf("NULL\n");
break;
case cJSON_False:
printf("false\n");
break;
case cJSON_True:
printf("true\n");
break;
case cJSON_Number:
printf("%g\n", node->valuedouble);
break;
case cJSON_String:
printf("%s\n", node->valuestring);
break;
case cJSON_Array:
printf("[\n");
// 遍歷數組元素
for (int i = 0; i< cJSON_GetArraySize(node); i++) {
traverse_json(cJSON_GetArrayItem(node, i));
}
printf("]\n");
break;
case cJSON_Object:
printf("{\n");
// 遍歷對象屬性
cJSON *child = node->child;
while (child != NULL) {
printf("%s: ", child->string);
traverse_json(child);
child = child->next;
}
printf("}\n");
break;
default:
break;
}
}

上述代碼中,遞歸函數traverse_json()使用switch語句對不同類型的節點進行處理。其中,cJSON_NULL、cJSON_False、cJSON_True、cJSON_Number、cJSON_String分別表示NULL、布爾值、數值、字符串類型的節點,cJSON_Array表示數組類型的節點,cJSON_Object表示對象類型的節點。遍歷數組和對象節點時,需要分別遍歷數組元素和對象屬性。

使用上述方法,我們就可以方便地對JSON數據進行遞歸取值操作了。