在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对象数组的内存。