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

c 將json 數據轉為實體

夏志豪2年前9瀏覽0評論

如果您使用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 數據轉為實體。同時,為了確保程序的高效性,我們也需要在使用完畢后,正確地釋放內存。