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

c list json字符串數組

錢多多1年前8瀏覽0評論

在C語言中,如果我們想要處理JSON字符串數組,我們可以使用C List。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include <jansson.h>
typedef struct {
char *name;
char *email;
} Person;
Person *person_new(char *json) {
json_t *root;
json_error_t error;
root = json_loads(json, 0, &error);
if(!root) {
fprintf(stderr, "error: on line %d: %s\n", error.line, error.text);
return NULL;
}
Person *person = malloc(sizeof(Person));
person->name = strdup(json_string_value(json_object_get(root, "name")));
person->email = strdup(json_string_value(json_object_get(root, "email")));
json_decref(root);
return person;
}
void person_free(Person *person) {
if(person) {
free(person->name);
free(person->email);
free(person);
}
}
void list_free(void *data) {
person_free((Person *)data);
}
int main() {
list_t *list = list_new(list_free);
list_node_t *node;
char *json;
json = "{\"name\":\"John Smith\",\"email\":\"john@example.com\"}";
node = list_rpush(list, list_node_new(person_new(json)));
json = "{\"name\":\"Jane Doe\",\"email\":\"jane@example.com\"}";
node = list_rpush(list, list_node_new(person_new(json)));
node = list_head(list);
while(node) {
Person *person = node->val;
printf("%s <%s>\n", person->name, person->email);
node = node->next;
}
list_destroy(list);
return 0;
}

首先,我們定義了一個Person結構體,表示一個人。然后,我們定義了person_new函數,將JSON字符串轉化為Person對象。person_new函數使用了json_loads函數來解析JSON字符串,然后根據JSON中的字段創建了一個Person對象。最后,我們使用json_decref函數釋放了JSON對象。我們還定義了一個person_free函數來釋放Person對象。

在main函數中,我們創建了一個list_t對象,然后向其中添加兩個Person對象。我們通過list_rpush函數將每個Person對象添加到list_t對象中。我們還定義了一個list_node_t對象來迭代list_t對象。我們使用了list_head函數來獲取list_t對象的第一個節點,然后使用while循環來迭代每個節點。我們獲取了每個節點的值,并輸出Person對象的名字和電子郵件地址。

最后,我們使用list_destroy函數來釋放list_t對象。這個函數也會調用我們為其定義的list_free函數來釋放每個節點的值。