在C語言中,對于JSON對象數組的排序可以使用快排算法,以下是示例代碼:
#include#include #include #include #include "cjson.h" int json_object_compare(const void *a, const void *b) { cJSON *objectA = *((cJSON **) a); cJSON *objectB = *((cJSON **) b); /* 排序條件為JSON對象中的某個字符串類型的屬性值 */ const char *valueA = cJSON_GetObjectItem(objectA, "propertyName")->valuestring; const char *valueB = cJSON_GetObjectItem(objectB, "propertyName")->valuestring; return strcmp(valueA, valueB); } int main() { char *jsonString = "{\"objects\":[{\"propertyName\":\"value1\"},{\"propertyName\":\"value2\"},{\"propertyName\":\"value3\"}]}"; cJSON *root = cJSON_Parse(jsonString); cJSON *objects = cJSON_GetObjectItem(root, "objects"); int arraySize = cJSON_GetArraySize(objects); cJSON **objectArray = (cJSON **) malloc(sizeof(cJSON *) * arraySize); for (int i = 0; i< arraySize; i++) { objectArray[i] = cJSON_GetArrayItem(objects, i); } qsort(objectArray, arraySize, sizeof(cJSON *), json_object_compare); /* 打印排序后JSON對象數組 */ printf("[%s]", cJSON_PrintUnformatted(objectArray[0])); for (int i = 1; i< arraySize; i++) { printf(",%s", cJSON_PrintUnformatted(objectArray[i])); } printf("\n"); cJSON_Delete(root); return 0; }
該示例代碼中使用了CJSON庫,可以通過逐行解讀代碼進行學習和調整,實現你所需的排序規則。
上一篇c json對象追加
下一篇html字體變大效果代碼