在C語言中,JSON數(shù)據(jù)的序列化通常稱為將一個(gè)結(jié)構(gòu)體轉(zhuǎn)換為JSON格式的字符串。這個(gè)過程可以使用 cJSON 庫(kù)來實(shí)現(xiàn)。cJSON 是一個(gè)輕量級(jí)的 C 語言 JSON 解析器,它能夠快速解析 JSON 字符串并創(chuàng)建相應(yīng)的 JSON 數(shù)據(jù)結(jié)構(gòu)。
要序列化 JSON 數(shù)據(jù),首先需要定義一個(gè)結(jié)構(gòu)體來存儲(chǔ)數(shù)據(jù),例如:
typedef struct{ int id; char name[20]; double balance; } User;
接下來,需要使用cJSON庫(kù)中的函數(shù)創(chuàng)建一個(gè)cJSON對(duì)象,并為它賦值。例如:
cJSON *userJson = cJSON_CreateObject(); cJSON_AddNumberToObject(userJson, "id", user->id); cJSON_AddStringToObject(userJson, "name", user->name); cJSON_AddNumberToObject(userJson, "balance", user->balance);
在上述代碼中,cJSON_CreateObject()函數(shù)用來創(chuàng)建一個(gè)空的cJSON對(duì)象,cJSON_AddNumberToObject()和 cJSON_AddStringToObject()函數(shù)用來向?qū)ο笾刑砑訑?shù)字和字符串屬性,屬性名為第二個(gè)參數(shù)。
最后,使用 cJSON_Print() 函數(shù)將 cJSON 對(duì)象序列化為 JSON 字符串。例如:
char *jsonStr = cJSON_Print(userJson); printf("%s\n", jsonStr);
在上面的代碼中,cJSON_Print()函數(shù)將cJSON對(duì)象轉(zhuǎn)換為JSON字符串并返回,我們可以將其打印出來,輸出結(jié)果如下:
{"id": 12345, "name": "John", "balance": 100.5}
這就是將一個(gè)C結(jié)構(gòu)體序列化為JSON格式字符串的過程,再使用cJSON庫(kù)中的其他函數(shù)來對(duì)其進(jìn)行解析,可輕松實(shí)現(xiàn)對(duì) JSON 數(shù)據(jù)的處理。