JSON(JavaScript Object Notation)是一種輕量級(jí)的數(shù)據(jù)交換格式,自從出現(xiàn)以來(lái)成為了網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)臉?biāo)準(zhǔn)之一。C語(yǔ)言有很多可以解析JSON的庫(kù),比如cJSON。
cJSON是一個(gè)C語(yǔ)言實(shí)現(xiàn)的輕量級(jí)JSON解析器,它具有簡(jiǎn)單易用、跨平臺(tái)、內(nèi)存占用小等優(yōu)點(diǎn)。cJSON沒有外部依賴,只需要把頭文件和源文件加入項(xiàng)目,在使用時(shí)調(diào)用相應(yīng)的函數(shù)即可。
#include "cJSON.h" int main() { char *json_str = "{\"name\": \"Tom\", \"age\": 18}"; cJSON *json = cJSON_Parse(json_str); if (json != NULL) { cJSON *name = cJSON_GetObjectItemCaseSensitive(json, "name"); cJSON *age = cJSON_GetObjectItemCaseSensitive(json, "age"); printf("name: %s, age: %d\n", name->valuestring, age->valueint); } cJSON_Delete(json); return 0; }
以上代碼展示了如何使用cJSON解析一個(gè)簡(jiǎn)單的JSON字符串,并獲取其中的數(shù)據(jù)。cJSON解析后返回一個(gè)cJSON對(duì)象,可以通過(guò)cJSON_GetObjectItemCaseSensitive函數(shù)獲取對(duì)象中的元素。
除了解析JSON字符串,cJSON還支持生成JSON格式的字符串。使用cJSON_CreateObject函數(shù)創(chuàng)建一個(gè)JSON對(duì)象,然后使用cJSON_AddItemToObject添加元素到對(duì)象中,最后使用cJSON_Print函數(shù)將對(duì)象轉(zhuǎn)化為JSON格式的字符串。
cJSON *root = cJSON_CreateObject(); cJSON_AddStringToObject(root, "name", "Tom"); cJSON_AddNumberToObject(root, "age", 18); char *json_str = cJSON_Print(root); printf("%s\n", json_str); cJSON_free(json_str); cJSON_Delete(root);
以上代碼展示了如何使用cJSON生成一個(gè)JSON格式的字符串。使用cJSON_CreateObject函數(shù)創(chuàng)建一個(gè)JSON對(duì)象,然后使用cJSON_AddItemToObject添加元素到對(duì)象中,最后使用cJSON_Print函數(shù)將對(duì)象轉(zhuǎn)化為JSON格式的字符串。