在C語(yǔ)言中,我們可以使用結(jié)構(gòu)體來(lái)表示一個(gè)對(duì)象,而如果有多個(gè)對(duì)象需要處理的話,可以使用數(shù)組或鏈表等數(shù)據(jù)結(jié)構(gòu),下面以結(jié)構(gòu)體數(shù)組為例:
typedef struct { int id; char name[20]; int age; } Person; int main() { // 初始化4個(gè)Person對(duì)象 Person persons[4] = { {1, "張三", 20}, {2, "李四", 25}, {3, "王五", 30}, {4, "趙六", 35} }; // 把對(duì)象轉(zhuǎn)成JSON格式的字符串 cJSON *json_array = cJSON_CreateArray(); for (int i = 0; i< 4; i++) { cJSON *json_person = cJSON_CreateObject(); cJSON_AddNumberToObject(json_person, "id", persons[i].id); cJSON_AddStringToObject(json_person, "name", persons[i].name); cJSON_AddNumberToObject(json_person, "age", persons[i].age); cJSON_AddItemToArray(json_array, json_person); } char *json_str = cJSON_PrintUnformatted(json_array); cJSON_Delete(json_array); printf("%s\n", json_str); // 把JSON格式的字符串轉(zhuǎn)成對(duì)象 cJSON *root = cJSON_Parse(json_str); cJSON *json_person; cJSON_ArrayForEach(json_person, root) { int id = cJSON_GetObjectItem(json_person, "id")->valueint; char *name = cJSON_GetObjectItem(json_person, "name")->valuestring; int age = cJSON_GetObjectItem(json_person, "age")->valueint; printf("%d %s %d\n", id, name, age); } // 釋放內(nèi)存 cJSON_Delete(root); free(json_str); return 0; }
上面的代碼演示了如何把多個(gè)對(duì)象轉(zhuǎn)成一個(gè)JSON數(shù)組,并把JSON格式的字符串轉(zhuǎn)成多個(gè)對(duì)象。