JSON(JavaScript Object Notation)是一種輕量級(jí)的數(shù)據(jù)交換格式,它易于人閱讀和編寫,同時(shí)也易于機(jī)器解析和生成。
C語言中有很多用于處理JSON的庫,比較常用的是cJSON。
使用cJSON編碼JSON數(shù)據(jù)的基本流程如下:
cJSON *root = cJSON_CreateObject();//創(chuàng)建JSON對(duì)象 cJSON_AddStringToObject(root, "name", "張三");//向?qū)ο筇砑幼址愋偷逆I值對(duì) cJSON_AddNumberToObject(root, "age", 25);//向?qū)ο筇砑訑?shù)字類型的鍵值對(duì) char *text = cJSON_Print(root);//將JSON對(duì)象轉(zhuǎn)換成字符串 cJSON_Delete(root);//釋放JSON對(duì)象 printf("JSON String:%s\n", text);//輸出JSON字符串 free(text);//釋放JSON字符串
上述代碼中,首先使用cJSON_CreateObject()函數(shù)創(chuàng)建一個(gè)JSON對(duì)象,然后使用cJSON_AddStringToObject()和cJSON_AddNumberToObject()向?qū)ο笾刑砑幼址蛿?shù)字類型的鍵值對(duì)。
接著使用cJSON_Print()函數(shù)將JSON對(duì)象轉(zhuǎn)換成字符串,并用printf函數(shù)輸出JSON字符串。
最后使用cJSON_Delete()釋放JSON對(duì)象,并使用free()函數(shù)釋放字符串內(nèi)存。
cJSON庫提供了很多其他的函數(shù),如cJSON_AddObjectToObject()和cJSON_AddArrayToObject()用于向JSON對(duì)象中添加對(duì)象類型和數(shù)組類型的鍵值對(duì)。
如果要解析一個(gè)JSON字符串,則可以使用cJSON_Parse()函數(shù)將字符串轉(zhuǎn)換成JSON對(duì)象,然后使用cJSON_GetObjectItem()函數(shù)獲取JSON對(duì)象中指定鍵的值。
char *json_str = "{\"name\":\"張三\",\"age\":25}"; cJSON *root = cJSON_Parse(json_str);//解析JSON字符串 cJSON *name = cJSON_GetObjectItem(root, "name");//獲取name鍵的值 cJSON *age = cJSON_GetObjectItem(root, "age");//獲取age鍵的值 printf("name:%s, age:%d\n", name->valuestring, age->valueint);//輸出結(jié)果 cJSON_Delete(root);//釋放JSON對(duì)象
上述代碼中,首先將JSON字符串轉(zhuǎn)換成JSON對(duì)象,然后使用cJSON_GetObjectItem()函數(shù)獲取JSON對(duì)象中指定鍵的值,并用printf輸出結(jié)果。
cJSON庫是一個(gè)非常好用的C語言JSON處理庫,不僅簡單易用,而且功能強(qiáng)大。