在一個 C 語言程序中,數據序列化是常見的操作之一。JSON 是一種通用的數據交換格式,它可以把復雜的對象序列化成字符串,方便網絡傳輸和存儲。下面是一個簡單的示例,展示如何把 C 類對象序列化成 JSON 格式。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <jansson.h> typedef struct _Person { char name[50]; int age; char address[100]; } Person; int main(int argc, char *argv[]) { Person *p = (Person *)malloc(sizeof(Person)); strcpy(p->name, "Tom"); p->age = 28; strcpy(p->address, "New York"); json_t *json_obj = json_object(); json_object_set_new(json_obj, "name", json_string(p->name)); json_object_set_new(json_obj, "age", json_integer(p->age)); json_object_set_new(json_obj, "address", json_string(p->address)); const char *json_str = json_dumps(json_obj, JSON_INDENT(2)); printf("%s\n", json_str); free(p); free((void *)json_str); json_decref(json_obj); return 0; }
上面的代碼中,定義了一個 Person 類型的結構體,表示一個人的基本信息。使用 malloc 函數動態分配一塊內存,然后填充數據。接著使用 jansson 庫提供的函數,創建一個新的 JSON 對象,并把 Person 的屬性作為鍵值對添加到 JSON 對象中。最后,使用 json_dumps 函數把 JSON 對象序列化成字符串,再打印出來。注意需要在使用完后釋放內存。
使用 JSON 格式序列化數據,在網絡傳輸和存儲中有很多優勢,比如可以跨平臺、跨語言、易于解析和生成等。在 C 語言中,使用 jansson 庫可以方便地進行 JSON 序列化和反序列化操作,可以大大提高開發效率。