C 結(jié)構(gòu)體序列化 JSON 是一個常用的操作,將結(jié)構(gòu)體轉(zhuǎn)換成 JSON 字符串,便于在程序中傳遞、存儲和解析。下面我們來學(xué)習(xí)一下如何使用 C 語言實現(xiàn)結(jié)構(gòu)體序列化為 JSON。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <jansson.h> /* 定義一個結(jié)構(gòu)體 */ typedef struct { char name[20]; int age; } Person; /* 將結(jié)構(gòu)體序列化為 JSON 字符串 */ char *person_to_json(Person p) { json_t *root = json_object(); // 創(chuàng)建一個 JSON 對象 json_object_set_new(root, "name", json_string(p.name)); // 添加 name 屬性 json_object_set_new(root, "age", json_integer(p.age)); // 添加 age 屬性 char *json_str = json_dumps(root, JSON_INDENT(2)); // 轉(zhuǎn)為 JSON 字符串,并設(shè)置縮進 json_decref(root); // 釋放 JSON 對象 return json_str; // 返回 JSON 字符串 } int main() { Person p = {"Tom", 24}; char *json_str = person_to_json(p); printf("Person: %s\n", json_str); free(json_str); // 釋放 JSON 字符串 return 0; }
上面的代碼中定義了一個 Person 結(jié)構(gòu)體,并實現(xiàn)了將其序列化為 JSON 字符串的函數(shù) person_to_json。在函數(shù)中,我們創(chuàng)建了一個 JSON 對象,并通過 json_object_set_new 函數(shù)向其添加屬性,最后通過 json_dumps 函數(shù)將其轉(zhuǎn)換為字符串。
的確,C 語言沒有內(nèi)置的 JSON 序列化庫,因此我們需要使用外部庫來實現(xiàn)它。jansson 是一個廣泛使用的 C 語言 JSON 序列化和解析庫,具有方便、高效、易用等優(yōu)點。
上一篇delphi5 json
下一篇vue.js 遮罩