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

c json 數(shù)組 轉(zhuǎn) list集合

錢艷冰2年前8瀏覽0評論

C語言與JSON的相互轉(zhuǎn)換需要用到第三方庫,我們這里使用cJSON這個(gè)庫來實(shí)現(xiàn)將JSON數(shù)組轉(zhuǎn)換成C語言中的list集合。

首先,在C語言中需要導(dǎo)入cJSON.h文件,可以通過以下代碼實(shí)現(xiàn):

#include "cJSON.h"

然后我們需要從JSON文件中讀取數(shù)組,轉(zhuǎn)換成cJSON中的json對象:

//從文件中讀取JSON內(nèi)容
FILE *fp = fopen("test.json", "rb");
fseek(fp, 0, SEEK_END);
long filesize = ftell(fp);
rewind(fp);
char *content = (char *)malloc((filesize + 1) * sizeof(char));
fread(content, sizeof(char), filesize, fp);
fclose(fp);
//解析JSON
cJSON *root = cJSON_Parse(content);
free(content);

接下來,我們需要獲取JSON數(shù)組的長度,并遍歷數(shù)組中的所有元素,將元素添加到C語言的list集合中:

//獲取JSON數(shù)組長度
int length = cJSON_GetArraySize(root);
//初始化list集合
list *lst = newList();
//遍歷JSON數(shù)組
for (int i = 0; i< length; i++) {
//獲取JSON數(shù)組元素
cJSON *item = cJSON_GetArrayItem(root, i);
//將元素添加到list集合中
int value = cJSON_GetNumberValue(item);
addLast(lst, value);
}
//釋放JSON對象空間
cJSON_Delete(root);

最后,我們需要在代碼中定義list結(jié)構(gòu)體和其相關(guān)的操作函數(shù),如下所示:

typedef struct ListNode {
int val;
struct ListNode *next;
} ListNode;
typedef struct {
ListNode *head;
ListNode *tail;
} list;
list *newList() {
list *lst = (list *)malloc(sizeof(list));
lst->head = NULL;
lst->tail = NULL;
return lst;
}
void addLast(list *lst, int val) {
ListNode *node = (ListNode *)malloc(sizeof(ListNode));
node->val = val;
node->next = NULL;
if (lst->tail == NULL) {
lst->head = node;
lst->tail = node;
} else {
lst->tail->next = node;
lst->tail = node;
}
}

這樣,我們就實(shí)現(xiàn)了將JSON數(shù)組轉(zhuǎn)換成C語言中的list集合。