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

c json 轉(zhuǎn) list對(duì)象

C語(yǔ)言是一種被廣泛使用的計(jì)算機(jī)編程語(yǔ)言,在日常編程中我們經(jīng)常需要將JSON數(shù)據(jù)轉(zhuǎn)化為L(zhǎng)ist對(duì)象,以便后續(xù)的操作。借助 cJSON 這個(gè)開(kāi)源庫(kù),我們可以很方便地實(shí)現(xiàn)這一功能。

/*
* 本例子展示了如何將JSON數(shù)據(jù)轉(zhuǎn)化為L(zhǎng)ist對(duì)象。
*/
#include#include#include#include "cJSON.h"
#define MAX_JSON_SIZE 1024
typedef struct list_node {
char* data;
struct list_node* next;
} list_node_t;
void list_push(list_node_t* head, cJSON* value) {
while (head->next) {
head = head->next;
}
head->next = (list_node_t*)malloc(sizeof(list_node_t));
head = head->next;
head->data = cJSON_PrintUnformatted(value);
head->next = NULL;
}
list_node_t* json_to_list(cJSON* root) {
if (cJSON_IsArray(root)) {
list_node_t* head = (list_node_t*)malloc(sizeof(list_node_t));
head->next = NULL;
int i;
for (i = 0; i< cJSON_GetArraySize(root); i++) {
cJSON* value = cJSON_GetArrayItem(root, i);
list_push(head, value);
}
return head;
}
return NULL;
}
int main() {
char test_json[MAX_JSON_SIZE] = "[{\"name\":\"Tom\",\"age\":20},{\"name\":\"Jack\",\"age\":22}]";
cJSON* root = cJSON_Parse(test_json);
list_node_t* head = json_to_list(root);
list_node_t* current = head;
while (current) {
printf("%s\n", current->data);
current = current->next;
}
cJSON_Delete(root);
return 0;
}

以上代碼展示了如何將JSON數(shù)據(jù)轉(zhuǎn)化為L(zhǎng)ist對(duì)象,并打印List中的每一個(gè)元素。需要注意的是,cJSON庫(kù)需要我們?cè)谑褂猛曛笫謩?dòng)刪除分配的內(nèi)存。