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

c 將復雜json轉(zhuǎn)為對象

黃文隆2年前8瀏覽0評論

C語言是一種強大的編程語言,它由于其高效性和廣泛適用性而備受青睞。JSON作為一種輕量級的數(shù)據(jù)交換格式,由于其易讀性和易解析性也被廣泛應(yīng)用。然而,當JSON的結(jié)構(gòu)變得復雜時,在C語言中解析JSON數(shù)據(jù)將變得困難。本文將介紹如何將復雜JSON數(shù)據(jù)轉(zhuǎn)換為對象。

#include#include#include#include#include "cJSON.h"
typedef struct {
int id;
char name[50];
int age;
char address[200];
} Person;
void parsePerson(cJSON *personJSON, Person *person) {
cJSON *idJSON = cJSON_GetObjectItem(personJSON, "id");
person->id = idJSON->valueint;
cJSON *nameJSON = cJSON_GetObjectItem(personJSON, "name");
strncpy(person->name, cJSON_GetStringValue(nameJSON), sizeof(person->name));
cJSON *ageJSON = cJSON_GetObjectItem(personJSON, "age");
person->age = ageJSON->valueint;
cJSON *addressJSON = cJSON_GetObjectItem(personJSON, "address");
strncpy(person->address, cJSON_GetStringValue(addressJSON), sizeof(person->address));
}
int main() {
char *jsonStr = "{\"id\":1,\"name\":\"Tom\",\"age\":24,\"address\":\"123 Main St, Anytown, USA\"}";
cJSON *root = cJSON_Parse(jsonStr);
Person person;
parsePerson(root, &person);
printf("id: %d\n", person.id);
printf("name: %s\n", person.name);
printf("age: %d\n", person.age);
printf("address: %s\n", person.address);
cJSON_Delete(root);
return 0;
}

在這個例子中,我們定義了一個名為Person的結(jié)構(gòu)體,它包含id,name,age和address字段。接下來,我們定義了一個函數(shù)parsePerson,它從JSON對象解析出一個Person對象。

首先,我們使用cJSON_GetObjectItem函數(shù)從JSON對象中獲取id,name,age和address字段。然后,我們使用cJSON_GetStringValue函數(shù)將字符值轉(zhuǎn)換為字符串,并使用strncpy函數(shù)將值復制到我們的Person結(jié)構(gòu)體中。

最后,我們在主函數(shù)中調(diào)用parsePerson函數(shù),并將解析出的Person對象打印出來。需要注意的是,在使用cJSON_Parse函數(shù)將JSON字符串解析為JSON對象后,需要使用cJSON_Delete函數(shù)釋放JSON對象占用的內(nèi)存。