如果您使用C語言作為開發(fā)語言,那么您可能需要在項目開發(fā)過程中將Json數(shù)據(jù)轉(zhuǎn)為實體。下面我們將為您介紹 C 將 Json 數(shù)據(jù)轉(zhuǎn)為實體的方法。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <jansson.h> typedef struct{ char *name; int age; char *gender; }Person; void print_person(Person *p); Person *parse_person(json_t *json); int main(int argc, char **argv) { const char *json_str = "{\"name\":\"Tom\",\"age\":20,\"gender\":\"male\"}"; json_t *json; json_error_t json_err; // 解析json字符串 json = json_loads(json_str, JSON_DECODE_ANY, &json_err); if (!json) { fprintf(stderr, "parse json error: on line %d: %s\n", json_err.line, json_err.text); return -1; } // 解析成Person結(jié)構(gòu)體 Person *p = parse_person(json); // 輸出Person print_person(p); // 釋放內(nèi)存 json_decref(json); free(p); return 0; } Person *parse_person(json_t *json) { Person *p = (Person *)malloc(sizeof(Person)); p->name = strdup(json_string_value(json_object_get(json, "name"))); p->age = json_integer_value(json_object_get(json, "age")); p->gender = strdup(json_string_value(json_object_get(json, "gender"))); return p; } void print_person(Person *p) { printf("Name: %s\n", p->name); printf("Age: %d\n", p->age); printf("Gender: %s\n", p->gender); }
上述代碼中,我們通過 jansson 庫的函數(shù)解析 Json 字符串,并將其解析成 Person 結(jié)構(gòu)體。在解析時,我們使用 json_string_value() 函數(shù)獲得 Json 中的字符串?dāng)?shù)據(jù),在獲得 Json 中的整型數(shù)據(jù)時,則使用了 json_integer_value() 函數(shù)。
通過以上方法,您可以在 C 語言中快速地將 Json 數(shù)據(jù)轉(zhuǎn)為實體。同時,為了確保程序的高效性,我們也需要在使用完畢后,正確地釋放內(nèi)存。