在C語言中,使用list結構進行數據存儲非常常見。當需要將list轉化為json字符串數組時,需要使用json-c這個第三方庫。json-c是一個JSON的C語言解析和生成器庫。
#include <stdio.h> #include <json-c/json.h> #include <stdlib.h> #include <string.h> int main() { // 創(chuàng)建list struct list_head mylist; INIT_LIST_HEAD(&mylist); // 插入數據 struct listitem *item; item = (struct listitem*)malloc(sizeof(struct listitem)); item->data = "apple"; list_add(&item->list, &mylist); item = (struct listitem*)malloc(sizeof(struct listitem)); item->data = "banana"; list_add(&item->list, &mylist); // 轉化為json字符串數組 struct json_object * jarray = json_object_new_array(); struct list_head * pos; struct listitem * tmp; list_for_each(pos, &mylist) { tmp = list_entry(pos, struct listitem, list); json_object_array_add(jarray, json_object_new_string(tmp->data)); } // 輸出json字符串數組 printf("%s\n", json_object_to_json_string(jarray)); json_object_put(jarray); // 釋放內存 list_for_each(pos, &mylist) { tmp = list_entry(pos, struct listitem, list); list_del(pos); free(tmp); } return 0; }
以上代碼中,首先創(chuàng)建了一個名為mylist的list結構并插入了兩個字符串元素。然后使用json-c中提供的json_object_new_array()函數創(chuàng)建了一個json對象數組。使用list_for_each()函數遍歷mylist,將每個元素的data字段添加到json對象數組中,最后使用json_object_to_json_string()函數將json對象數組轉化為json字符串數組。
需要注意的是,在使用完畢之后,必須使用json_object_put()函數來釋放json對象數組的內存,并使用list_for_each()函數遍歷mylist來釋放list結構中的元素內存。
上一篇html怎么設置右邊陰影
下一篇mysql語句查詢上一級