在C語言中,將一個list數據結構轉換為JSON字符串數組可能相對比較復雜,因為C語言沒有默認的JSON解析器和生成器。
#include <stdio.h> #include <stdlib.h> #include <string.h> // List節點結構體定義 typedef struct node { int val; struct node *next; } ListNode; // 生成JSON字符串 void listToJson(ListNode *head, char **res) { int i = 0, size = 0; ListNode *ptr = head; while (ptr != NULL) { size++; ptr = ptr->next; } // 計算分配的字符數組大小 *res = (char *)malloc(sizeof(char) * (size * 6 + 5)); strcpy(*res, "["); ptr = head; while (ptr != NULL) { // 轉換為字符串并追加到字符數組 sprintf(*res + strlen(*res), "%d", ptr->val); ptr = ptr->next; if (++i != size) { strcat(*res, ","); } } strcat(*res, "]"); } int main() { char *res = NULL; ListNode *head = (ListNode *)malloc(sizeof(ListNode)); // 構造List head->val = 1; head->next = (ListNode *)malloc(sizeof(ListNode)); head->next->val = 2; head->next->next = NULL; listToJson(head, &res); printf("%s", res); free(head); free(res); return 0; }
在上述代碼中,我們首先定義了一個ListNode結構體來表示List節點。然后我們通過listToJson函數將List節點轉換為一個JSON字符串數組,并將結果存儲在字符數組res中。在這個函數中,我們遍歷List節點并將每個節點的值轉換為字符串,最終追加到字符數組中。
實際上,在將List轉換為JSON字符串數組時,我們可以使用許多第三方庫或者自定義解析器來簡化這個過程。但是,如果您僅需要轉換一個簡單的List或者不想依賴于外部庫,上述代碼是一個簡單而可行的解決方案。