在開發中,經常需要對JSON數據進行去重,使其數據更清晰、更有序。而C語言是一門非常適合于處理數據的語言,所以C語言開發者很需要知道如何使用C語言對JSON進行去重。
//先定義JSON數據 char *jsonStr = "{\"name\":\"Tom\",\"age\":18,\"gender\":\"male\",\"hobbies\":[\"coding\",\"reading\",\"swimming\"]}"; //將JSON轉化為cJSON格式 cJSON *root = cJSON_Parse(jsonStr); //獲取hobbies數組 cJSON *hobbies = cJSON_GetObjectItem(root, "hobbies"); //定義一個map變量用于去重 mapm; //遍歷數組 cJSON_ArrayForEach(hobby, hobbies) { if (hobby->type == cJSON_String) { //將hobby拼接為一個字符串 string key = hobby->valuestring; //判斷是否已經存在該元素 if (m.find(key) == m.end()) { //不存在則添加到map集合中 m[key] = true; } } } //移除重復元素 cJSON *newHobbies = cJSON_CreateArray(); for (auto it : m) { cJSON_AddItemToArray(newHobbies, cJSON_CreateString(it.first.c_str())); } //將新的hobbies數組內容覆蓋舊的hobbies數組 cJSON_ReplaceItemInObject(root, "hobbies", newHobbies); //打印新的JSON char *newJson = cJSON_PrintUnformatted(root); printf("%s", newJson);
以上代碼中,首先定義了一個JSON數據,并將其轉化為cJSON格式。然后獲取其中的hobbies數組,定義一個map變量m用于去重,并遍歷數組將元素拼接為一個字符串并添加到集合m中。最后移除重復元素并將新的hobbies數組覆蓋舊的數組,得到新的JSON字符串。
通過使用C語言的cJSON庫和STL的map集合,我們可以輕松地對JSON進行去重操作,使得數據更規范、更清晰、更易讀。