色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

c 的json轉(zhuǎn)list

在C編程中,常常會(huì)用到JSON格式的數(shù)據(jù)進(jìn)行數(shù)據(jù)傳輸和存儲(chǔ),但是在C語(yǔ)言中沒(méi)有直接轉(zhuǎn)化為JSON格式的函數(shù),因此我們需要手動(dòng)編寫(xiě)代碼來(lái)實(shí)現(xiàn)JSON轉(zhuǎn)換。其中,JSON數(shù)組可以轉(zhuǎn)化為C語(yǔ)言中的List數(shù)據(jù)類型。下面,將介紹C語(yǔ)言中如何將JSON數(shù)據(jù)轉(zhuǎn)化為L(zhǎng)ist。

#include#include#include "cJSON.h"
#define SIZE 100
typedef struct node{
int data;
struct node *next;
}NODE;
NODE *create(int data){
NODE *p = (NODE *)malloc(sizeof(NODE));
p->data = data;
p->next = NULL;
return p;
}
NODE *insert(NODE *L, int x){
NODE *p = L;
NODE *temp = create(x);
if(L == NULL){
L = temp;
}
else{
while(p->next != NULL){
p = p->next;
}
p->next = temp;
}
return L;
}
void printList(NODE *L){
NODE *p = L;
while(p){
printf("%d ", p->data);
p = p->next;
}
}
int main(){
char buffer[SIZE] = {0};
FILE *fp = fopen("data.json", "rb");
fread(buffer, 1, SIZE, fp);
cJSON *json = cJSON_Parse(buffer);
cJSON *list = cJSON_GetObjectItem(json, "list");
NODE *L = NULL;
for(int i = 0; i< cJSON_GetArraySize(list); i++){
cJSON *item = cJSON_GetArrayItem(list, i);
int data = cJSON_GetObjectItem(item, "data")->valueint;
L = insert(L, data);
}
printList(L);
fclose(fp);
return 0;
}

上述代碼中,定義了一個(gè)NODE結(jié)構(gòu)體,用來(lái)表示鏈表的節(jié)點(diǎn),包括data和next兩個(gè)屬性。其中,create函數(shù)用來(lái)創(chuàng)建節(jié)點(diǎn),insert函數(shù)用來(lái)插入節(jié)點(diǎn),printList函數(shù)用來(lái)遍歷并打印鏈表。主函數(shù)中,讀取JSON文件并解析為json對(duì)象,再使用cJSON庫(kù)函數(shù)cJSON_GetObjectItem獲取list數(shù)組對(duì)象。使用cJSON庫(kù)函數(shù)cJSON_GetArraySize獲取數(shù)組長(zhǎng)度,并使用cJSON_GetArrayItem獲取每個(gè)元素的json對(duì)象。最后,獲取data屬性值,并調(diào)用insert函數(shù)將其插入鏈表中。

通過(guò)上述代碼,我們可以在C語(yǔ)言中實(shí)現(xiàn)JSON轉(zhuǎn)List。