JSON是現(xiàn)代 Web 應(yīng)用程序中常用的數(shù)據(jù)格式。在C語言開發(fā)中,我們經(jīng)常需要解析 JSON 數(shù)據(jù)。C語言沒有現(xiàn)成的庫來解析 JSON,但我們可以使用第三方庫(如cJSON)來實(shí)現(xiàn) JSON 數(shù)據(jù)的解析。
cJSON 是一個(gè)輕量級的 JSON 解析器,在嵌入式系統(tǒng)、移植性等方面具有優(yōu)勢。下面是一個(gè)簡單的使用 cJSON 解析 JSON 的示例代碼:
#include <stdio.h> #include <cJSON.h> int main() { char* json = "{\"name\":\"小明\",\"age\":20,\"city\":\"北京\"}"; cJSON* json_root = cJSON_Parse(json); if (json_root == NULL) { printf("json 格式錯(cuò)誤:%s\n", cJSON_GetErrorPtr()); return 1; } cJSON* name = cJSON_GetObjectItem(json_root, "name"); cJSON* age = cJSON_GetObjectItem(json_root, "age"); cJSON* city = cJSON_GetObjectItem(json_root, "city"); printf("名字:%s\n年齡:%d\n城市:%s\n", name->valuestring, age->valueint, city->valuestring); cJSON_Delete(json_root); return 0; }
在上面的代碼中,首先在字符串中定義了一個(gè) JSON 數(shù)據(jù),然后使用 cJSON_Parse 函數(shù)將其解析成一個(gè) cJSON 對象。如果解析失敗,則會(huì)返回 NULL,并使用 cJSON_GetErrorPtr 查看錯(cuò)誤信息。解析成功后,我們可以使用 cJSON_GetObjectItem 函數(shù)獲取指定鍵的值,并輸出到終端。最后需要使用 cJSON_Delete 函數(shù)釋放 cJSON 對象所占用的內(nèi)存。
總之,使用 cJSON 可以輕松解析 JSON 數(shù)據(jù),為我們的 C 語言程序提供了極大的便利性。