C JSON 轉(zhuǎn)換成 Byte 數(shù)組是一種常見的數(shù)據(jù)格式轉(zhuǎn)換方式。Byte 數(shù)組可以用來存儲二進制數(shù)據(jù),而 C 語言中處理 JSON 數(shù)據(jù)最常用的庫是 cJSON。
cJSON 庫是一個輕量級的解析 JSON 數(shù)據(jù)的庫,它可以在大多數(shù)的 C 語言編譯器中運行。cJSON 庫提供了一組函數(shù),可以將 JSON 數(shù)據(jù)轉(zhuǎn)換成內(nèi)存中的 cJSON 數(shù)據(jù)結(jié)構(gòu),以及將 cJSON 數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換成 JSON 數(shù)據(jù)。
想要將 cJSON 數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換成 Byte 數(shù)組,可以使用 cJSON 庫中提供的cJSON_Print
函數(shù)和strlen
函數(shù)來實現(xiàn)。
char* json_str = "{\"name\": \"John\", \"age\": 30 }"; cJSON* json = cJSON_Parse(json_str); char* json_bytes; if (json != NULL) { json_bytes = (char*)malloc(strlen(cJSON_Print(json)) + 1); memcpy(json_bytes, cJSON_Print(json), strlen(cJSON_Print(json)) + 1); cJSON_Delete(json); }
在上面的代碼中,首先定義了一個 JSON 字符串并使用cJSON_Parse
函數(shù)將其轉(zhuǎn)換成 cJSON 數(shù)據(jù)結(jié)構(gòu)。然后使用cJSON_Print
函數(shù)將 cJSON 數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換成 JSON 字符串,并使用strlen
函數(shù)獲取 JSON 字符串的長度。接著根據(jù) JSON 字符串的長度分配內(nèi)存空間,將 JSON 字符串拷貝到該空間中。最后使用cJSON_Delete
函數(shù)釋放 cJSON 數(shù)據(jù)結(jié)構(gòu)所占的內(nèi)存空間。
通過以上步驟,就可以將 cJSON 數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換成 Byte 數(shù)組。