JSON (JavaScript Object Notation) 是一種輕量級(jí)的數(shù)據(jù)交換格式,常用于 Web 應(yīng)用程序中數(shù)據(jù)的傳輸和存儲(chǔ)。C 語(yǔ)言是一種非常流行的編程語(yǔ)言, 在許多應(yīng)用程序中都使用到了 C 語(yǔ)言的庫(kù)。在 C 語(yǔ)言中,能夠處理 JSON 數(shù)據(jù)是非常重要的,這使得程序可以輕松地讀取和處理來(lái)自網(wǎng)絡(luò)的數(shù)據(jù)。
在 C 語(yǔ)言中,引入了許多用于處理 JSON 數(shù)據(jù)的庫(kù),其中最流行的庫(kù)是 cJSON。cJSON 是一個(gè)輕量級(jí)、快速、可嵌入的 JSON 解析器和生成器庫(kù),它僅包含兩個(gè)文件,可以在大多數(shù)操作系統(tǒng)上使用。
#include "cJSON.h" int main() { // 創(chuàng)建 JSON 對(duì)象 cJSON *root = cJSON_CreateObject(); // 添加 key-value 對(duì) cJSON_AddStringToObject(root, "name", "Tom"); cJSON_AddNumberToObject(root, "age", 20); // 將 JSON 對(duì)象轉(zhuǎn)換成字符串 char *json = cJSON_Print(root); printf("%s\n", json); // 解析 JSON 字符串 cJSON *newRoot = cJSON_Parse(json); cJSON *name = cJSON_GetObjectItemCaseSensitive(newRoot, "name"); cJSON *age = cJSON_GetObjectItemCaseSensitive(newRoot, "age"); printf("%s is %d years old\n", name->valuestring, age->valueint); // 釋放內(nèi)存 cJSON_Delete(root); cJSON_Delete(newRoot); free(json); return 0; }
cJSON 庫(kù)提供了易于使用的 API,可以幫助我們快速解析和生成 JSON 數(shù)據(jù)。cJSON_Parse() 函數(shù)可以將 JSON 字符串解析成一個(gè) cJSON 對(duì)象,而 cJSON_Print() 函數(shù)可以將 cJSON 對(duì)象轉(zhuǎn)換成 JSON 字符串。此外,cJSON_GetObjectItem() 函數(shù)可以獲取對(duì)象中的值。