C JSON字符串是一種常用的數(shù)據(jù)格式,可以方便地在不同編程語言之間傳遞數(shù)據(jù)。而其中包含數(shù)組的JSON字符串,排序操作也是開發(fā)者常用的操作之一。下面我們來看一下如何在 C 語言中對 JSON字符串中的數(shù)組進(jìn)行排序。
//1.引入相關(guān)頭文件 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <jansson.h> //2.定義比較函數(shù) int compare (const void * a, const void * b) { return ( *(int*)a - *(int*)b ); } int main() { //3.定義JSON字符串 char* input = "{ \"arr\": [1, 4, 2, 7, 5] }"; //4.加載JSON字符串 json_error_t error; json_t* root = json_loads(input, 0, &error); //5.獲取數(shù)組 json_t* arr = json_object_get(root, "arr"); //6.獲取數(shù)組長度 int arrSize = json_array_size(arr); //7.定義一個(gè)int類型數(shù)組 int intArr[arrSize]; //8.將JSON數(shù)組中的值存放到int類型數(shù)組中 for (int i = 0; i < arrSize; i++) { json_t* val = json_array_get(arr, i); intArr[i] = json_integer_value(val); } //9.對int類型數(shù)組進(jìn)行排序 qsort(intArr, arrSize, sizeof(int), compare); //10.將排序后的int類型數(shù)組更新回JSON數(shù)組中 for (int i = 0; i < arrSize; i++) { json_t* val = json_integer(intArr[i]); json_array_set(arr, i, val); } //11.輸出排序后的JSON字符串 char* output = json_dumps(root, JSON_INDENT(2)); printf("%s\n", output); //12.釋放內(nèi)存 free(output); json_decref(root); return 0; }
以上是 C 語言中對 JSON字符串中數(shù)組排序的實(shí)現(xiàn)方法。通過加載JSON字符串、獲取數(shù)組、存放到int類型數(shù)組、排序、更新回JSON數(shù)組等方法,我們可以方便地對JSON字符串中數(shù)組進(jìn)行排序操作。希望對您有所幫助。