在處理 JSON 數據時,遍歷樹形結構的 JSON 數據是一個常見的需求。C 語言下有很多開源的 JSON 庫可以使用,比如 cJSON,以及 jsmn 等等。
下面以 cJSON 庫為例,介紹如何遍歷樹形結構的 JSON 數據。
/* 先創建一個 JSON 對象,此處僅以字符串作為示例 */ char *str = "{\"name\":\"張三\",\"age\":18,\"hobby\":[\"籃球\",\"游泳\"]}"; cJSON *root = cJSON_Parse(str); /* 遍歷 JSON 對象 */ cJSON *item = root->child; while (item) { switch (item->type) { case cJSON_String: printf("%s: %s\n", item->string, item->valuestring); break; case cJSON_Number: printf("%s: %d\n", item->string, item->valueint); break; case cJSON_Array: /* 遍歷 JSON 數組 */ cJSON *array_item = item->child; while (array_item) { printf("%s: %s\n", item->string, array_item->valuestring); array_item = array_item->next; } break; default: break; } item = item->next; }
以上代碼演示了如何遍歷一個包含字符串、數字以及數組的 JSON 對象。遍歷過程中,根據不同的類型進行不同的處理,實現了遍歷功能。