当先锋百科网

首页 1 2 3 4 5 6 7

在C语言中,有时候我们需要将JSON数据转换成对象数组,以方便后续的处理和操作。下面,我们介绍如何使用C语言中的JSON库将JSON数据转换成对象数组。

#include#include#include#include "cJSON.h"
typedef struct {
int id;
char name[20];
int age;
} Person;
int main() {
char *jsonStr = "{\"data\":[{\"id\":1,\"name\":\"Tom\",\"age\":18},{\"id\":2,\"name\":\"Jerry\",\"age\":20}]}";
cJSON *json = cJSON_Parse(jsonStr);
cJSON *dataArray = cJSON_GetObjectItem(json, "data");
int arraySize = cJSON_GetArraySize(dataArray);
Person *personArray = (Person *)malloc(arraySize * sizeof(Person));
for (int i = 0; i< arraySize; i++) {
cJSON *item = cJSON_GetArrayItem(dataArray, i);
cJSON *id = cJSON_GetObjectItem(item, "id");
cJSON *name = cJSON_GetObjectItem(item, "name");
cJSON *age = cJSON_GetObjectItem(item, "age");
personArray[i].id = id->valueint;
strcpy(personArray[i].name, name->valuestring);
personArray[i].age = age->valueint;
}
for (int i = 0; i< arraySize; i++) {
printf("id:%d, name:%s, age:%d\n", personArray[i].id, personArray[i].name, personArray[i].age);
}
cJSON_Delete(json);
free(personArray);
return 0;
}

在以上代码中,我们首先定义了Person结构体,然后定义了main函数。在main函数中,我们首先初始化JSON字符串,然后使用cJSON_Parse函数将JSON字符串转换成JSON对象。接着,我们使用cJSON_GetObjectItem函数获取JSON对象中的data数组,并通过cJSON_GetArraySize函数获取data数组的大小。我们创建了一个与data数组大小相同的Person对象数组用来存储数组中的个人信息。

在循环过程中,我们通过cJSON_GetArrayItem函数获取data数组中的每一个JSON对象,并通过cJSON_GetObjectItem函数获取其中的id、name和age属性。我们将这些属性值存储到对应的Person对象中,以方便后续的使用。

最后,我们遍历Person对象数组并输出其中的每一个人的id、name和age属性。最后,我们通过cJSON_Delete函数释放JSON对象的内存,通过free函数释放Person对象数组的内存。