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

c json 數(shù)組轉(zhuǎn)對(duì)象數(shù)組

老白1年前8瀏覽0評(píng)論

在C語(yǔ)言中,處理JSON數(shù)組時(shí),有時(shí)需要將其轉(zhuǎn)換為對(duì)象數(shù)組。下面是一個(gè)簡(jiǎn)單示例,演示如何使用C語(yǔ)言將JSON數(shù)組轉(zhuǎn)換為對(duì)象數(shù)組。

#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庫(kù),該庫(kù)提供了對(duì)JSON的解析和生成支持。

在代碼中,首先將JSON字符串加載到一個(gè)json_t對(duì)象中。然后使用json_array_size()函數(shù)獲取數(shù)組大小(即對(duì)象數(shù)量),并為對(duì)象數(shù)組分配內(nèi)存。接下來(lái),使用json_array_get()和json_object_get()函數(shù)獲取JSON對(duì)象的鍵值對(duì)。最后,創(chuàng)建一個(gè)Person結(jié)構(gòu)體來(lái)存儲(chǔ)每個(gè)對(duì)象的name和age。

使用完畢后,釋放內(nèi)存并銷(xiāo)毀JSON對(duì)象。