在C語言中,List(鏈表)是一種常見的數據結構。而JSON(JavaScript Object Notation)則是一種常用的數據交換格式。在實際開發中,經常需要將List轉化為JSON格式,并且在JSON中嵌套其他數據。本文將介紹如何在C語言中將List轉化為嵌套的JSON格式。
首先,我們需要使用第三方庫cJSON來處理JSON格式。可以在官方網站https://github.com/DaveGamble/cJSON上下載并安裝該庫。接著,我們需要定義一個鏈表結構體來存儲數據,如下:
typedef struct node { char* name; char* gender; int age; struct node* next; } Node; Node* head = NULL;
上述結構體中,我們定義了人物的姓名、性別和年齡三個屬性,并將它們存儲在一個鏈表中。接下來,我們需要將該鏈表結構轉化為JSON數據格式。代碼如下:
void listToJson(Node* head) { cJSON* json = cJSON_CreateObject(); cJSON* list = cJSON_CreateArray(); Node* p = head; while(p) { cJSON* item = cJSON_CreateObject(); cJSON_AddStringToObject(item, "name", p->name); cJSON_AddStringToObject(item, "gender", p->gender); cJSON_AddNumberToObject(item, "age", p->age); cJSON_AddItemToArray(list, item); p = p->next; } cJSON_AddItemToObject(json, "people", list); char* jsonString = cJSON_Print(json); printf("%s", jsonString); cJSON_Delete(json); }
在上述代碼中,我們使用cJSON提供的函數逐個將鏈表中的數據添加到JSON對象中,并將整個鏈表數組添加到總的JSON對象中。最后,我們將JSON對象轉化為字符串并打印出來。可以看到,JSON格式的輸出結果如下:
{ "people": [ { "name": "John", "gender": "Male", "age": 24 }, { "name": "Lucy", "gender": "Female", "age": 22 } ] }
如上所示,我們成功地將鏈表轉化為了嵌套的JSON格式。在實際開發中,我們可以根據需要進一步添加或修改JSON中的數據。