對(duì)于C語言開發(fā)者來說,處理JSON數(shù)據(jù)是一個(gè)極其常見的任務(wù)。而處理JSON數(shù)組時(shí),有一個(gè)非常常見的問題就是如何去除數(shù)組中的重復(fù)元素。下面介紹一種簡(jiǎn)單有效的方法。
首先,我們需要用C語言的JSON庫(kù)解析JSON數(shù)據(jù),例如通過cJSON庫(kù)
cJSON *json = cJSON_Parse(jsonData);
然后,我們需要?jiǎng)?chuàng)建一個(gè)新的JSON數(shù)組來存放去重后的元素,可以使用cJSON庫(kù)的
cJSON *newArray = cJSON_CreateArray();
接下來,我們需要遍歷原始JSON數(shù)組的每一個(gè)元素,并將其添加到新數(shù)組中,但需要先判斷是否已經(jīng)存在相同的元素:
cJSON *curItem = NULL; cJSON_ArrayForEach(curItem, json) { if (!isItemExist(newArray, curItem)) { cJSON_AddItemToArray(newArray, cJSON_Duplicate(curItem, true)); } }
其中
bool isItemExist(cJSON *array, cJSON *item) { cJSON *curItem = NULL; cJSON_ArrayForEach(curItem, array) { if (cJSON_Compare(curItem, item)) { return true; } } return false; }
這里通過
最終,我們得到的是一個(gè)去重后的JSON數(shù)組,可以將其轉(zhuǎn)換成字符串并輸出:
char *newJsonStr = cJSON_Print(newArray); printf("%s", newJsonStr);
這樣,我們就成功解決了C語言下處理JSON數(shù)組去重的問題。