在C語(yǔ)言中,將JSON轉(zhuǎn)換成類(lèi)是一個(gè)很普遍的需求。JSON是一種用于存儲(chǔ)和交換數(shù)據(jù)的格式,而類(lèi)是面向?qū)ο蟪绦蛟O(shè)計(jì)的基本構(gòu)造,用于封裝特定的數(shù)據(jù)和行為。下面介紹一下如何在C語(yǔ)言中將JSON轉(zhuǎn)換成類(lèi)。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <jansson.h> typedef struct Person { char *name; int age; } Person; int main() { char *json_string = "{\"name\":\"Tom\",\"age\":25}"; json_t *root; json_error_t error; root = json_loads(json_string, 0, &error); if (!root) { fprintf(stderr, "error: on line %d: %s\n", error.line, error.text); exit(1); } char *name = json_string_value(json_object_get(root, "name")); int age = json_integer_value(json_object_get(root, "age")); Person *person = (Person*) malloc(sizeof(Person)); person->name = name; person->age = age; printf("Name: %s\nAge: %d", person->name, person->age); json_decref(root); free(person); return 0; }
上面的代碼使用了jansson庫(kù)來(lái)處理JSON數(shù)據(jù)。首先,我們定義了一個(gè)名為Person的結(jié)構(gòu)體,其中包含一個(gè)字符串類(lèi)型的name和一個(gè)整型的age。接著,我們通過(guò)json_loads()函數(shù)將JSON字符串轉(zhuǎn)換成JSON對(duì)象,并使用json_object_get()函數(shù)獲取其中的name和age屬性。我們將這兩個(gè)屬性的值存儲(chǔ)到一個(gè)Person類(lèi)型的結(jié)構(gòu)體中,并輸出結(jié)果。
需要注意的是,name屬性的值需要使用json_string_value()函數(shù)獲取,而age屬性的值需要使用json_integer_value()函數(shù)獲取。此外,需要在程序結(jié)束時(shí)釋放Person結(jié)構(gòu)體的內(nèi)存,避免內(nèi)存泄漏。