c 結(jié)構(gòu)體是一種用于存儲不同數(shù)據(jù)類型的集合。它的靈活性和易于使用性使它成為在編程中廣受歡迎的數(shù)據(jù)結(jié)構(gòu)之一。在進行網(wǎng)絡(luò)通信或數(shù)據(jù)交換的過程中,將 c 結(jié)構(gòu)體轉(zhuǎn)換為 json 串可以實現(xiàn)不同語言之間的交互和數(shù)據(jù)的傳輸。下面將介紹如何將 c 結(jié)構(gòu)體轉(zhuǎn)換為 json 串。
#include <stdio.h> #include <stdlib.h> #include <jansson.h> typedef struct { char *name; int age; char *address; } Person; int main() { Person p = {"Tom", 25, "Beijing"}; json_t *json = json_object(); json_object_set_new(json, "name", json_string(p.name)); json_object_set_new(json, "age", json_integer(p.age)); json_object_set_new(json, "address", json_string(p.address)); char *json_str = json_dumps(json, JSON_INDENT(4)); printf("%s\n", json_str); free(json_str); json_decref(json); return 0; }
上述代碼中,我們定義了一個 Person 結(jié)構(gòu)體,包括名字、年齡和地址字段。將其轉(zhuǎn)換為 json 串的過程由 json-c 庫提供的函數(shù)實現(xiàn):首先創(chuàng)建一個 json 對象,然后使用 json_object_set_new 函數(shù)為每個屬性設(shè)置值。最后調(diào)用 json_dumps 函數(shù)將 json 對象轉(zhuǎn)換為字符串形式。JSON_INDENT 宏定義了 json 串的格式化方式,這里指定為 4 個空格縮進。
使用 c 結(jié)構(gòu)體轉(zhuǎn)換為 json 串能夠輕松地在不同語言之間進行數(shù)據(jù)交換。在多數(shù)實際應(yīng)用中,需要的是一個通用標準的數(shù)據(jù)交換格式,以方便多種軟件之間的通信,而 json 串正是這種通用標準之一。