C語言是一門常用的編程語言,它在處理數據方面擁有很高的效率。在實際的開發中,我們常常需要將數據以JSON的形式傳遞,并將其轉換為對象數組對象以便于后續的處理。下面我們就來介紹如何在C語言中把JSON轉成對象數組對象。
#include#include #include #include "cJSON.h" #define ARRAY_SIZE(array) sizeof(array)/sizeof(array[0]) //計算數組大小的宏定義 typedef struct { char *name; //名字 double score; //得分 } Student; int main() { //讀取JSON字符串 char *json_string = "{\"students\":[{\"name\":\"Tom\",\"score\":88.5},{\"name\":\"Alice\",\"score\":92.0},{\"name\":\"Bob\",\"score\":76.5}]}"; //解析JSON字符串成JSON對象 cJSON *root = cJSON_Parse(json_string); //獲取JSON對象中的數組對象 cJSON *students = cJSON_GetObjectItem(root, "students"); //計算數組大小 int size = cJSON_GetArraySize(students); //定義存儲對象的數組 Student *arr = (Student *)malloc(sizeof(Student) * size); for (int i = 0; i< size; i++) { //獲取JSON對象中的對象 cJSON *student = cJSON_GetArrayItem(students, i); //獲取對象中的名字和得分 char *name = cJSON_GetObjectItem(student, "name")->valuestring; double score = cJSON_GetObjectItem(student, "score")->valuedouble; //把名字和得分存儲到數組中 arr[i].name = (char *)malloc(sizeof(char) * strlen(name)); strcpy(arr[i].name, name); arr[i].score = score; } //打印對象數組對象 for (int i = 0; i< size; i++) { printf("name:%s, score:%.2f\n", arr[i].name, arr[i].score); free(arr[i].name); } //釋放內存 free(arr); cJSON_Delete(root); return 0; }
以上的C語言代碼實現了把JSON轉成對象數組對象的功能。在代碼中,我們使用了第三方庫cJSON來解析JSON。首先,我們讀取JSON字符串,并將其解析成JSON對象。接著,我們從JSON對象中獲取數組對象,并計算出數組的大小,并定義一個Student結構體數組用來存放轉換后的結果。然后,我們遍歷數組對象,獲取每個對象中的名字和得分,并將其存儲到數組中。最后,我們打印結果,并釋放內存。
上一篇http2.0vue
下一篇python 爬蟲從零