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

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

謝彥文1年前6瀏覽0評論

在C語言中,有時候我們需要將JSON數(shù)據(jù)轉(zhuǎn)換成對象數(shù)組,以方便后續(xù)的處理和操作。下面,我們介紹如何使用C語言中的JSON庫將JSON數(shù)據(jù)轉(zhuǎn)換成對象數(shù)組。

#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結(jié)構(gòu)體,然后定義了main函數(shù)。在main函數(shù)中,我們首先初始化JSON字符串,然后使用cJSON_Parse函數(shù)將JSON字符串轉(zhuǎn)換成JSON對象。接著,我們使用cJSON_GetObjectItem函數(shù)獲取JSON對象中的data數(shù)組,并通過cJSON_GetArraySize函數(shù)獲取data數(shù)組的大小。我們創(chuàng)建了一個與data數(shù)組大小相同的Person對象數(shù)組用來存儲數(shù)組中的個人信息。

在循環(huán)過程中,我們通過cJSON_GetArrayItem函數(shù)獲取data數(shù)組中的每一個JSON對象,并通過cJSON_GetObjectItem函數(shù)獲取其中的id、name和age屬性。我們將這些屬性值存儲到對應(yīng)的Person對象中,以方便后續(xù)的使用。

最后,我們遍歷Person對象數(shù)組并輸出其中的每一個人的id、name和age屬性。最后,我們通過cJSON_Delete函數(shù)釋放JSON對象的內(nèi)存,通過free函數(shù)釋放Person對象數(shù)組的內(nèi)存。