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

c 解析json數據 實體類

錢瀠龍1年前8瀏覽0評論

C語言是一種常用的編程語言,在Web開發中,經常需要解析JSON數據。解析JSON數據需要使用JSON解析庫,而同時也需要創建與JSON數據對應的實體類。下面將介紹如何在C語言中實現解析JSON數據和創建實體類。

在C語言中,常用的JSON解析庫有 cJSON 和 jsmn。這里以 cJSON 為例來介紹。cJSON支持從JSON字符串中獲取值,例如對象、數組、字符串、數字等,并將其保存到cJSON結構體中。

cJSON *root = cJSON_Parse(json_str);
cJSON *item = cJSON_GetObjectItem(root, "name");
char *name = cJSON_GetStringValue(item);

在使用cJSON解析JSON數據之前,我們需要先創建與JSON數據對應的實體類。實體類包含了JSON數據中所有的屬性,也包含了與屬性對應的setter和getter方法。

#include <stdlib.h>
#include <string.h>
typedef struct {
char *name;
int age;
} Person;
Person *person_new() {
Person *p = malloc(sizeof(Person));
p->name = NULL;
p->age = 0;
return p;
}
void person_free(Person *p) {
if (p == NULL) {
return;
}
if (p->name != NULL) {
free(p->name);
}
free(p);
}
char *person_get_name(Person *p) {
return p->name;
}
void person_set_name(Person *p, char *name) {
if (p->name != NULL) {
free(p->name);
}
p->name = strdup(name);
}
int person_get_age(Person *p) {
return p->age;
}
void person_set_age(Person *p, int age) {
p->age = age;
}

在創建實體類后,我們可以通過get和set方法來獲取和設置實體類中的屬性。在解析JSON數據時,我們可以根據JSON數據中的屬性來調用實體類中的setter方法,從而為實體類賦值。

Person *p = person_new();
cJSON *root = cJSON_Parse(json_str);
cJSON *item = cJSON_GetObjectItem(root, "name");
person_set_name(p, cJSON_GetStringValue(item));
item = cJSON_GetObjectItem(root, "age");
person_set_age(p, item->valueint);

通過上述代碼,我們成功地將JSON數據轉換為實體類對象,也即將JSON數據中的屬性值賦值到了實體類中的屬性中。