欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

c 將復雜json轉為對象

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

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

#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的結構體,它包含id,name,age和address字段。接下來,我們定義了一個函數parsePerson,它從JSON對象解析出一個Person對象。

首先,我們使用cJSON_GetObjectItem函數從JSON對象中獲取id,name,age和address字段。然后,我們使用cJSON_GetStringValue函數將字符值轉換為字符串,并使用strncpy函數將值復制到我們的Person結構體中。

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