C JSON 是一種能夠處理、創建和解析 JSON 數據的 C 語言庫,它提供了一組簡單易用的 API,并且能夠與許多操作系統和編譯器進行兼容。如果你需要在 C 語言中解析 JSON 數據或創建 JSON 數據,那么 C JSON 庫可能是一個不錯的選擇。
在 C JSON 中,遍歷 JSON 數據的鍵值是一項常見的任務,下面是一段示例代碼,用于遍歷 JSON 數據中的所有鍵值:
#include <stdio.h> #include <stdlib.h> #include <cjson/cJSON.h> void traverse(cJSON *json) { cJSON *item = NULL; if (json == NULL) { return; } switch (json->type) { case cJSON_Object: cJSON_ArrayForEach(item, json) { traverse(item); } break; case cJSON_Array: cJSON_ArrayForEach(item, json) { traverse(item); } break; case cJSON_String: printf("%s : %s\n", json->string, json->valuestring); break; case cJSON_Number: printf("%s : %g\n", json->string, json->valuedouble); break; case cJSON_True: printf("%s : true\n", json->string); break; case cJSON_False: printf("%s : false\n", json->string); break; case cJSON_Null: printf("%s : null\n", json->string); break; default: break; } } int main() { char *json_data = "{\"name\":\"Jack\",\"age\":25,\"gender\":\"Male\",\"hobbies\":[\"basketball\",\"football\",\"swimming\"]}"; cJSON *json = cJSON_Parse(json_data); traverse(json); cJSON_Delete(json); return 0; }
代碼中的 traverse 函數,通過遞歸遍歷 JSON 數據中的所有元素,如果元素的類型是字符串、數字、真、假或 NULL,就輸出該元素的鍵值對到控制臺中,并且將有子元素的元素遞歸地傳遞給 traverse 函數,直到完成整個遍歷操作。