欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

c list 轉化為json字符串數組

夏志豪1年前8瀏覽0評論

在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結構中的元素內存。