在C語言中,有時我們需要對JSON格式的數據進行排序,這可以通過使用一些常用的庫來實現。下面我們將介紹如何使用 cJSON 庫來對JSON格式的數據進行排序。
/* 包含頭文件 */ #include#include "cJSON.h" /* 將JSON數據按照 key 排序的比較函數 */ int compare(const void *a, const void *b) { cJSON *c1 = *(cJSON **)a; cJSON *c2 = *(cJSON **)b; return strcmp(c1->string, c2->string); } int main() { /* 創建JSON對象,并添加一些數據 */ cJSON *json = cJSON_CreateObject(); cJSON_AddStringToObject(json, "name", "Tom"); cJSON_AddNumberToObject(json, "age", 18); cJSON_AddStringToObject(json, "gender", "male"); cJSON_AddStringToObject(json, "address", "China"); /* 獲取JSON對象的所有成員 */ cJSON **items = (cJSON **)malloc(cJSON_GetArraySize(json)); cJSON_ArrayForEach(*items, json) {} /* 對成員進行排序 */ qsort(items, cJSON_GetArraySize(json), sizeof(cJSON *), compare); /* 將排序后的成員重新添加到 JSON 對象中 */ cJSON_Delete(json); json = cJSON_CreateObject(); for (int i = 0; i< cJSON_GetArraySize(items); i++) { cJSON_AddItemToObject(json, items[i]->string, items[i]->child); } free(items); /* 打印排序后的JSON數據 */ char *data = cJSON_Print(json); printf("Sorted JSON data:\n%s\n", data); /* 釋放內存 */ cJSON_Delete(json); free(data); return 0; }
以上代碼中,我們首先創建了一個JSON對象,并往里添加了一些數據。然后通過 cJSON_GetArraySize 函數獲取對象的成員數量,并使用 cJSON_ArrayForEach 循環將所有成員保存到一個數組 items 中。接下來我們調用 qsort 函數對 items 數組進行排序,排序規則是按照成員的 key 進行比較。最后我們重新創建一個空的 JSON 對象,將排序后的成員重新添加到其中,并打印輸出。
通過這種方法,我們可以輕松地對 JSON 數據進行排序,使其更加整潔有序。
上一篇vue iview