CJSON是一個C語言編寫的簡潔的JSON解析器庫,它具有輕便高效的特點。該庫是由英文名為Dave Gamble的作者創(chuàng)建,并在GPLv2協(xié)議下發(fā)布。CJSON庫支持JSON的解析,序列化和JSON對象的訪問。該庫使用C語言編寫,不依賴于任何其他庫。
CJSON庫的使用非常容易,首先要包含頭文件
cJSON *root;
接下來,調(diào)用cJSON_Parse函數(shù)來將JSON字符串解析成CJSON結(jié)構(gòu):
root = cJSON_Parse(json_str);
其中json_str是一個指向JSON字符串的指針。解析完成后,我們就可以對JSON字符串進行訪問了。例如,我們可以通過以下方式獲取JSON對象中的數(shù)據(jù):
cJSON *name = cJSON_GetObjectItem(root, "name"); printf("name: %s\n", name->valuestring);
上面的代碼中,我們首先通過調(diào)用cJSON_GetObjectItem函數(shù)獲取名字為"name"的JSON對象,然后通過valuestring成員訪問該JSON對象中的字符串值。
除了獲取JSON對象中的數(shù)據(jù),cJSON庫還支持將CJSON結(jié)構(gòu)序列化為JSON字符串,例如:
char *json_str = cJSON_Print(root); printf("%s\n", json_str);
上面的代碼中,我們通過調(diào)用cJSON_Print函數(shù)將CJSON結(jié)構(gòu)序列化為JSON字符串并輸出到終端。
需要注意的是,當我們使用cJSON_Parse函數(shù)解析JSON字符串時,如果該字符串不是一個合法的JSON格式,則解析失敗,返回NULL。因此,我們需要對返回值進行判斷。
if (root == NULL) { printf("parse json_str failed\n"); }
總之,CJSON庫是一個非常實用的JSON解析器,他可以幫助我們在C語言中方便地操作JSON對象。