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

c json 數組轉對象數組

老白1年前8瀏覽0評論

在C語言中,處理JSON數組時,有時需要將其轉換為對象數組。下面是一個簡單示例,演示如何使用C語言將JSON數組轉換為對象數組。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <jansson.h>
struct Person{
char *name;
int age;
};
int main()
{
char * json_string = "[{\"name\":\"John\", \"age\":20},{\"name\":\"Alice\", \"age\":25},{\"name\":\"Bob\", \"age\":30}]";
json_t *root;
json_error_t error;
root = json_loads(json_string, 0, &error);
if(!root)
{
fprintf(stderr, "error: in %s: line %d: %s\n", error.source, error.line, error.text);
return 1;
}
size_t array_size = json_array_size(root);
struct Person *person_array = malloc(sizeof(struct Person) * array_size);
for(size_t i = 0; i < array_size; i++)
{
json_t *object = json_array_get(root, i);
json_t *name = json_object_get(object, "name");
json_t *age = json_object_get(object, "age");
const char * name_str = json_string_value(name);
person_array[i].name = malloc(strlen(name_str) + 1);
strcpy(person_array[i].name, name_str);
person_array[i].age = json_integer_value(age);
}
// do something with person_array
for (size_t i = 0; i < array_size; i++) {
free(person_array[i].name);
}
free(person_array);
json_decref(root);
return 0;
}

以上代碼使用了jansson庫,該庫提供了對JSON的解析和生成支持。

在代碼中,首先將JSON字符串加載到一個json_t對象中。然后使用json_array_size()函數獲取數組大小(即對象數量),并為對象數組分配內存。接下來,使用json_array_get()和json_object_get()函數獲取JSON對象的鍵值對。最后,創建一個Person結構體來存儲每個對象的name和age。

使用完畢后,釋放內存并銷毀JSON對象。