C json是一種輕量級的數據交換格式,常用于在不同系統間傳遞數據。在處理json數據時,我們可能需要篩選出重復值,這就需要使用到一些技巧。
// 示例json數據 { "name": "張三", "age": 20, "gender": "男", "hobbies": ["游泳", "籃球", "游戲"], "friends": [ {"name": "李四", "age": 22}, {"name": "王五", "age": 23}, {"name": "李四", "age": 22} ] } // 篩選friends中的重復項 void findDuplicate(cJSON* friends) { int arraySize = cJSON_GetArraySize(friends); cJSON* friendNameMap = cJSON_CreateObject(); // 保存姓名和計數的map for (int i = 0; i< arraySize; i++) { cJSON* friendNode = cJSON_GetArrayItem(friends, i); cJSON* nameNode = cJSON_GetObjectItem(friendNode, "name"); const char* name = nameNode->valuestring; cJSON* countNode = cJSON_GetObjectItem(friendNameMap, name); if (countNode) { int count = countNode->valueint; cJSON_SetIntValue(countNode, ++count); if (count == 2) { printf("重復的朋友名字:%s\n", name); } } else { cJSON_AddNumberToObject(friendNameMap, name, 1); } } }
以上就是C json篩選重復值的一個示例,通過遍歷數組元素,使用一個Map記錄每個名字的出現次數,當出現次數等于2時則可以認為是重復項。這種方法可以適用于一些簡單的json數據,如果數據結構較為復雜,可能需要使用更為高效的算法和數據結構。