如果您使用C語言作為開發語言,那么您可能需要在項目開發過程中將Json數據轉為實體。下面我們將為您介紹 C 將 Json 數據轉為實體的方法。
#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結構體 Person *p = parse_person(json); // 輸出Person print_person(p); // 釋放內存 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 庫的函數解析 Json 字符串,并將其解析成 Person 結構體。在解析時,我們使用 json_string_value() 函數獲得 Json 中的字符串數據,在獲得 Json 中的整型數據時,則使用了 json_integer_value() 函數。
通過以上方法,您可以在 C 語言中快速地將 Json 數據轉為實體。同時,為了確保程序的高效性,我們也需要在使用完畢后,正確地釋放內存。