在進行前端開發時,經常需要對 JSON 對象進行排序。排序的方式有很多種,例如按照數字、字母、時間等。在這里,我們將介紹如何使用 C 語言按數字給 JSON 對象排序。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdarg.h> #include <math.h> #include <ctype.h> #include <stdbool.h> #include "json.h" /* 比較函數 */ int cmp(const void *a,const void *b) { double d1 = ((json_t *)a)->value.real; double d2 = ((json_t *)b)->value.real; if(d1 >d2) return 1; else if(d1 == d2) return 0; else return -1; } /* json 對象排序函數 */ void json_sort(json_t *json) { int i; json_object_t *obj; if(json_type(json) == JSON_OBJECT) // 判斷類型為 json 對象 { obj = json->value.object; for(i = 0; i< obj->n_pairs; i++) json_sort(obj->pairs[i].value); // 遞歸調用 qsort(obj->pairs, obj->n_pairs, sizeof *obj->pairs, cmp); // 對 json 對象排序 } else if(json_type(json) == JSON_ARRAY) // 判斷類型為 json 數組 { for(i = 0; i< json->value.array->length; i++) json_sort(json->value.array->items[i]); // 遞歸調用 qsort(json->value.array->items, json->value.array->length, sizeof *json->value.array->items, cmp); // 對 json 數組排序 } }
在上面的代碼中,我們創建了一個函數 cmp 用于比較兩個 JSON 對象中的數字大小,然后通過 qsort 函數進行排序。同時,我們還創建了一個 json_sort 函數,用于對 JSON 對象進行遞歸排序。
總的來說,使用 C 語言按數字對 JSON 對象進行排序并不復雜,只需要一個比較函數和一個遞歸排序函數即可。在實際開發過程中,我們只需要調用 json_sort 函數即可輕松實現排序操作。