在C語(yǔ)言中生成JSON數(shù)據(jù)并不是件難事。JSON數(shù)據(jù)格式是一種輕量級(jí)的數(shù)據(jù)交換格式,它采用了類(lèi)似于字典的鍵值對(duì)結(jié)構(gòu),可以方便地表示結(jié)構(gòu)化數(shù)據(jù)。下面我們來(lái)看看在C語(yǔ)言中如何生成JSON數(shù)據(jù)。
#include "cJSON.h" void generateJSON(){ /*創(chuàng)建一個(gè)對(duì)象*/ cJSON *obj=cJSON_CreateObject(); /*往對(duì)象里添加鍵值對(duì)*/ cJSON_AddStringToObject(obj,"name","Tom"); cJSON_AddNumberToObject(obj,"age",23); /*打印JSON數(shù)據(jù)*/ char *json=cJSON_Print(obj); printf("%s\n",json); /*銷(xiāo)毀對(duì)象*/ cJSON_Delete(obj); free(json); } int main(){ generateJSON(); return 0; }
以上代碼示例使用了cJSON庫(kù),可以通過(guò)在程序中包含cJSON.h頭文件來(lái)使用。首先創(chuàng)建一個(gè)JSON對(duì)象,然后往對(duì)象里添加鍵值對(duì)。最后通過(guò)cJSON_Print函數(shù)將對(duì)象轉(zhuǎn)化為JSON格式的字符串,并打印出來(lái)。最后別忘了釋放內(nèi)存和銷(xiāo)毀對(duì)象。
除了字符串和數(shù)字類(lèi)型,cJSON庫(kù)還支持布爾、null和數(shù)組類(lèi)型。比如添加數(shù)組可以使用cJSON_AddItemToArray函數(shù):
/*創(chuàng)建一個(gè)對(duì)象*/ cJSON *obj=cJSON_CreateObject(); /*往對(duì)象里添加數(shù)組*/ cJSON *arr=cJSON_CreateArray(); cJSON_AddItemToArray(arr,cJSON_CreateNumber(1)); cJSON_AddItemToArray(arr,cJSON_CreateNumber(2)); cJSON_AddItemToArray(arr,cJSON_CreateNumber(3)); cJSON_AddItemToObject(obj,"numbers",arr); /*打印JSON數(shù)據(jù)*/ char *json=cJSON_Print(obj); printf("%s\n",json); /*銷(xiāo)毀對(duì)象*/ cJSON_Delete(obj); free(json);
以上代碼添加了一個(gè)名為numbers的數(shù)組,并向其中添加了三個(gè)數(shù)值,最后將整個(gè)JSON對(duì)象轉(zhuǎn)化為字符串并打印出來(lái)。
在實(shí)際生產(chǎn)環(huán)境下生成JSON數(shù)據(jù)常用于服務(wù)器返回?cái)?shù)據(jù),以及在各種Web應(yīng)用中傳輸數(shù)據(jù)。