C JSON 是一種輕量級(jí)的數(shù)據(jù)交換格式,它以文本形式表示復(fù)雜的數(shù)據(jù)結(jié)構(gòu),常用于網(wǎng)絡(luò)數(shù)據(jù)傳輸。在實(shí)際應(yīng)用中,經(jīng)常需要從 JSON 數(shù)據(jù)中篩選出不重復(fù)的數(shù)據(jù),這時(shí)就需要用到一些特定的技巧。
// 這是一個(gè)示例 JSON 數(shù)據(jù) { "data": [ {"id": 1, "name": "張三"}, {"id": 2, "name": "李四"}, {"id": 3, "name": "張三"}, {"id": 4, "name": "王五"} ] } // 使用 cJSON 庫解析 JSON 數(shù)據(jù),遍歷數(shù)組并去重 cJSON *root = cJSON_Parse(json_str); cJSON *data = cJSON_GetObjectItem(root, "data"); cJSON *uniq_data = cJSON_CreateArray(); for(int i = 0; i< cJSON_GetArraySize(data); i++) { cJSON *item = cJSON_GetArrayItem(data, i); cJSON *dup_item = cJSON_GetObjectItem(uniq_data, cJSON_Print(item)); if(!dup_item) { cJSON_AddItemToArray(uniq_data, cJSON_Duplicate(item, true)); } }
上述代碼使用了 cJSON 庫解析 JSON 數(shù)據(jù),并通過遍歷數(shù)據(jù)數(shù)組,將不重復(fù)的數(shù)據(jù)加入新的數(shù)組中。其中 cJSON_GetObjectItem 和 cJSON_GetArrayItem 可以獲取 JSON 對(duì)象和數(shù)組的成員,cJSON_Duplicate 可以復(fù)制一個(gè) cJSON 對(duì)象,cJSON_Print 可以將 cJSON 對(duì)象轉(zhuǎn)化為字符串。
通過上述代碼,我們可以在應(yīng)用中方便地篩選出不重復(fù)的 JSON 數(shù)據(jù)。當(dāng)然,在實(shí)際應(yīng)用中,還需要考慮一些特殊情況,比如 JSON 數(shù)據(jù)可能存在嵌套等復(fù)雜結(jié)構(gòu),因此使用時(shí)需要根據(jù)具體情況進(jìn)行修改。