在C語言中,嵌套的list數據結構在實際開發中經常被使用。而將這些數據轉換為JSON格式數據是非常常見的需求。本文將介紹如何在C語言中實現嵌套list轉JSON數據。
//定義節點結構體 struct node{ char* key; char* value; //子節點 struct node* child; //下一個節點 struct node* next; }; //轉換函數 char* nodeToJson(struct node *root){ char* jsonString = (char*) malloc(sizeof(char)); strcat(jsonString, "{"); while(root!=NULL){ strcat(jsonString, "\""); strcat(jsonString, root->key); strcat(jsonString, "\":"); if(root->child!=NULL){ char* childJson = nodeToJson(root->child); strcat(jsonString, childJson); }else{ strcat(jsonString, "\""); strcat(jsonString, root->value); strcat(jsonString, "\""); } if(root->next!=NULL){ strcat(jsonString, ","); } root = root->next; } strcat(jsonString, "}"); return jsonString; } //使用示例 int main(){ //構造數據結構 struct node *root = (struct node*) malloc(sizeof(struct node)); root->key = "name"; root->value = "Tom"; root->child = (struct node*) malloc(sizeof(struct node)); root->child->key = "score"; root->child->value = "90"; root->child->next = NULL; root->child->child = NULL; root->next = (struct node*) malloc(sizeof(struct node)); root->next->key = "age"; root->next->value = "18"; root->next->next = NULL; root->next->child = NULL; //轉換為JSON格式 char* jsonString = nodeToJson(root); //輸出JSON格式數據 printf("JSON格式數據為:%s\n", jsonString); return 0; }
上述代碼中,我們定義了一個節點結構體,其中包含了鍵、值、子節點和下一個節點。然后我們定義了一個轉換函數,將一個節點的數據轉換成JSON格式數據。在轉換函數中,我們首先將節點轉換為一個JSON對象,然后遍歷節點的子節點和下一個節點,將它們加入到JSON對象中。當節點沒有子節點時,將該節點轉換為JSON值。
最后,在使用示例中,我們構造了一個嵌套結構的節點數據,并將其轉換為JSON格式數據。這樣,我們就可以輕松地將任意的嵌套list數據結構轉換成JSON格式數據了。
下一篇vue使用久了會卡