C 語言是一門強(qiáng)類型語言,但在處理多層嵌套的 JSON 時(shí)卻顯得技巧繁多。下面將介紹兩種 C 語言的方法來解析多層 JSON。
方法一:遞歸解析。
void parse_json(char* json_str) { cJSON* json = cJSON_Parse(json_str); // 用 cJSON_parse 函數(shù)解析 json 字符串 if (json) { // 對 json 進(jìn)行操作,比如獲取鍵值 cJSON* id = cJSON_GetObjectItem(json, "id"); if (id) { printf("id:%d\n", id ->valueint); } cJSON* sub_json = cJSON_GetObjectItem(json, "sub_json"); if (sub_json) { // 遞歸調(diào)用自身解析子 json parse_json(cJSON_PrintUnformatted(sub_json)); } cJSON_Delete(json); // 解析完成后釋放 json } }
方法二:使用 cjson 指針數(shù)組。
void parse_json(char* json_str) { cJSON* json = cJSON_Parse(json_str); cJSON* list[10]; // 定義一個(gè)指針數(shù)組,用以存放 json 對象 int list_size = 0; if (json) { cJSON* id = cJSON_GetObjectItem(json, "id"); if (id) { printf("id:%d\n", id ->valueint); } cJSON* sub_json = cJSON_GetObjectItem(json, "sub_json"); if (sub_json) { // 將子 json 添加到指針數(shù)組中 list[list_size++] = sub_json; } cJSON_Delete(json); } for (int i = 0; i< list_size; i++) { // 對每個(gè)對象進(jìn)行操作 cJSON* item = list[i]; // ... } }
總結(jié):以上兩種方法各有利弊,需要根據(jù)實(shí)際情況選擇合適的方式來解析多層 JSON。