在使用C語言處理JSON數(shù)據(jù)的過程中,有時(shí)候需要將JSON數(shù)據(jù)轉(zhuǎn)換成字符串?dāng)?shù)組,以便于在程序中進(jìn)行后續(xù)操作。而使用C JSON庫提供的API可以很方便地實(shí)現(xiàn)這一過程。
#include <stdio.h> #include <cjson/cJSON.h> int main() { char json_str[] = "{\"name\":\"John\",\"age\":18}"; // 將JSON字符串轉(zhuǎn)換為cJSON對象 cJSON *json = cJSON_Parse(json_str); if (json == NULL) { printf("Error before: %s\n", cJSON_GetErrorPtr()); return 1; } // 將cJSON對象轉(zhuǎn)換為JSON格式的字符串 char *json_str_arr = cJSON_Print(json); printf("%s\n", json_str_arr); // 釋放cJSON對象和字符串?dāng)?shù)組的內(nèi)存 cJSON_Delete(json); free(json_str_arr); return 0; }
在以上示例代碼中,我們首先聲明了一個(gè)JSON格式的字符串,然后使用cJSON_Parse函數(shù)將其轉(zhuǎn)換成一個(gè)cJSON類型的對象。接下來,我們使用cJSON_Print函數(shù)將這個(gè)cJSON對象轉(zhuǎn)換為JSON格式的字符串,并賦值給一個(gè)字符指針類型變量json_str_arr。最后,我們打印這個(gè)字符串?dāng)?shù)組,并通過調(diào)用cJSON_Delete和free函數(shù)釋放內(nèi)存。
需要注意的是,cJSON_Print返回的字符串?dāng)?shù)組需要手動(dòng)釋放內(nèi)存,否則會(huì)發(fā)生內(nèi)存泄漏。同時(shí),該函數(shù)也提供了許多可選的參數(shù),以便于我們對生成的JSON字符串進(jìn)行格式化、縮進(jìn)處理等操作。