在C語言中,JSON是經常用到的數據格式,而list
#include <stdio.h> #include <jansson.h> #include <glib.h> typedef struct { gchar *name; gint age; } Person; static void print_persons(GList *persons) { for (GList *iter = persons; iter; iter = g_list_next(iter)) { Person *p = iter->data; g_print("Name:%s, Age:%d\n", p->name, p->age); } } int main() { const char *json_str = "[{\"name\":\"Alice\",\"age\":20},{\"name\":\"Bob\",\"age\":30}]"; json_error_t error; json_t *root = json_loads(json_str, 0, &error); if (!root) { g_warning("Failed to parse json:%s", error.text); return 1; } GList *persons = NULL; for (size_t i = 0; i< json_array_size(root); ++i) { json_t *person_json = json_array_get(root, i); Person *p = g_new(Person, 1); json_t *name_json = json_object_get(person_json, "name"); json_t *age_json = json_object_get(person_json, "age"); if (!name_json || !age_json) { g_warning("Invalid persons format"); g_free(p); continue; } p->name = g_strdup(json_string_value(name_json)); p->age = json_integer_value(age_json); persons = g_list_append(persons, p); } print_persons(persons); json_decref(root); g_list_free_full(persons, (GDestroyNotify)g_free); return 0; }
在上述示例中,我們將JSON數據列表解析成了一個GList對象,通過遍歷GList對象來輸出每個Person對象的姓名和年齡。JSON數據列表中的每個元素都是一個JSON對象,我們通過json_object_get函數來獲取其中的name和age屬性。
上一篇python 適用的系統
下一篇python 適應度函數