C語言中有很多解析json的庫,其中比較常用的是 cJSON。使用 cJSON 解析 json 后,我們可以將其轉化為 C 語言中的結構體。
cJSON *root = cJSON_Parse(jsonStr); if (!root) { printf("Error before: [%s]\n", cJSON_GetErrorPtr()); return -1; } // 通過 cJSON_GetObjectItem 獲取 json 中的字段值 cJSON *array = cJSON_GetObjectItem(root, "array");
如果需要對 json 中的某個字段進行排序,可以使用 qsort 函數(shù)對其進行排序。以數(shù)組為例:
typedef struct { int id; int score; } Student; // 比較函數(shù) int cmp(const void *a, const void *b) { return (*(Student *)b).score - (*(Student *)a).score; } cJSON *array = cJSON_GetObjectItem(root, "array"); int arraySize = cJSON_GetArraySize(array); Student *students = (Student *)malloc(sizeof(Student) * arraySize); for (int i = 0; i< arraySize; i++) { cJSON *item = cJSON_GetArrayItem(array, i); students[i].id = cJSON_GetObjectItem(item, "id")->valueint; students[i].score = cJSON_GetObjectItem(item, "score")->valueint; } qsort(students, arraySize, sizeof(Student), cmp);
上面的代碼會將 json 中的 "array" 數(shù)組按照 "score" 字段進行從大到小的排序。排序后,可以按照需求進行后續(xù)的操作,比如輸出排序后的結果。
上一篇vue jsonp攔截
下一篇header中json