欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

c json數組排序

林玟書2年前11瀏覽0評論

在C語言中,使用JSON格式是非常方便的,因為JSON作為一種輕量級的數據交換格式,易于閱讀和編寫。

當我們需要對JSON數組進行排序時,可以使用C語言的qsort函數來實現。首先,我們需要一個比較函數來告訴qsort如何比較兩個數組元素的大小。

int compare(const void *a, const void *b)
{
const int *pa = (const int *)a;
const int *pb = (const int *)b;
return *pa - *pb;
}

在這個比較函數中,我們將參數a和b轉換為整數指針,并返回它們的差值。這個差值告訴qsort函數a是否應該排在b之前、之后還是和b一樣大。

接下來,我們可以使用qsort函數來對JSON數組進行排序:

#include <stdio.h>
#include <stdlib.h>
#include <jansson.h>
int compare(const void *a, const void *b)
{
const int *pa = (const int *)a;
const int *pb = (const int *)b;
return *pa - *pb;
}
int main(int argc, char **argv)
{
const char *json = "[3, 1, 4, 1, 5, 9, 2, 6, 5]";
json_t *array = json_loads(json, 0, NULL);
size_t size = json_array_size(array);
int *data = (int *)malloc(size * sizeof(int));
for (size_t i = 0; i< size; i++) {
json_t *value = json_array_get(array, i);
data[i] = json_integer_value(value);
}
qsort(data, size, sizeof(int), compare);
for (size_t i = 0; i< size; i++) {
json_t *value = json_integer(data[i]);
json_array_set(array, i, value);
}
char *result = json_dumps(array, JSON_ENCODE_ANY);
printf("%s\n", result);
free(data);
json_decref(array);
free(result);
return 0;
}

在這個例子中,我們首先加載JSON數據并將其解析為數組。然后,我們將數組元素復制到一個整數數組中,并使用qsort函數對整數數組進行排序。

最后,我們將排序后的整數數組中的元素重新設置為JSON數組的元素,并將整個數組轉換為JSON數據并打印到控制臺上。

這個例子只是一個簡單的示例,如果你需要對JSON對象進行排序,可以在比較函數中使用json_object_get和json_object_set函數來實現。