JSON是一種常用的數(shù)據(jù)交換格式,它通常使用鍵值對(duì)的形式表示數(shù)據(jù),易于讀寫和解析。在C語(yǔ)言中,我們可以使用第三方庫(kù)來(lái)處理JSON數(shù)據(jù)的存儲(chǔ)和解析。
一種常用的C語(yǔ)言JSON解析庫(kù)是cJSON,它是一個(gè)輕量級(jí)的庫(kù),可以快速地將JSON格式的數(shù)據(jù)轉(zhuǎn)換為C語(yǔ)言中的數(shù)據(jù)類型。
使用cJSON庫(kù)存儲(chǔ)數(shù)據(jù),首先需要?jiǎng)?chuàng)建一個(gè)cJSON對(duì)象,并使用相應(yīng)的函數(shù)為其賦值。例如,下面的代碼創(chuàng)建了一個(gè)包含三個(gè)具有不同屬性的JSON對(duì)象:
cJSON *person = cJSON_CreateObject(); cJSON_AddStringToObject(person, "name", "張三"); cJSON_AddNumberToObject(person, "age", 25); cJSON *book = cJSON_CreateObject(); cJSON_AddStringToObject(book, "title", "《三國(guó)演義》"); cJSON_AddNumberToObject(book, "price", 29.99); cJSON *array = cJSON_CreateArray(); cJSON_AddItemToArray(array, person); cJSON_AddItemToArray(array, book);
在以上代碼中,首先使用cJSON_CreateObject()函數(shù)創(chuàng)建一個(gè)空的JSON對(duì)象person,然后通過(guò)cJSON_AddStringToObject()和cJSON_AddNumberToObject()函數(shù)為其添加屬性值。同樣地,我們創(chuàng)建了book這個(gè)JSON對(duì)象,并為其添加屬性值。最后,我們將person和book兩個(gè)對(duì)象添加到數(shù)組array中。
當(dāng)我們需要將這些JSON對(duì)象保存到文件中時(shí),可以使用cJSON_Print()函數(shù)將JSON對(duì)象轉(zhuǎn)換為字符串,并使用標(biāo)準(zhǔn)IO函數(shù)將其寫入文件中。例如,下面的代碼將array對(duì)象轉(zhuǎn)換為字符串,并寫入到文件中:
FILE *fp = fopen("data1.json", "w"); char *str = cJSON_Print(array); fprintf(fp, "%s", str); fclose(fp);
在以上代碼中,我們通過(guò)fopen()函數(shù)打開一個(gè)文件,并使用cJSON_Print()函數(shù)將JSON對(duì)象轉(zhuǎn)換為字符串。最后,使用fprintf()函數(shù)將字符串寫入文件中,并使用fclose()函數(shù)關(guān)閉文件句柄。
cJSON庫(kù)還提供了豐富的函數(shù),可用于解析JSON數(shù)據(jù)和構(gòu)建JSON對(duì)象,開發(fā)人員可以根據(jù)需要選擇相應(yīng)的函數(shù)來(lái)進(jìn)行操作。