女友小芸被教练猛烈进出视频 ,欧美videosdesexo吹潮,敌伦交换一区二区三区,CHINESEFREE高潮抽搐

二維碼
微世推網(wǎng)

掃一掃關(guān)注

當(dāng)前位置: 首頁(yè) » 快聞?lì)^條 » 科技資訊 » 正文

cJSON使用教程_json文件存取_cJSON實(shí)體

放大字體  縮小字體 發(fā)布日期:2022-02-20 23:31:28    作者:熊覃藝    瀏覽次數(shù):896
導(dǎo)讀

cJson使用有如下json數(shù)據(jù),我們學(xué)習(xí)如何解析它:{ "id":100, "username":"maye", "password":"123456", "online":false}從文件讀取json數(shù)據(jù)首先我們從文件中獲取js

cJson使用

有如下json數(shù)據(jù),我們學(xué)習(xí)如何解析它:

{ "id":100, "username":"maye", "password":"123456", "online":false}


從文件讀取json數(shù)據(jù)

首先我們從文件中獲取json數(shù)據(jù):

const char* jsonFromFile(const char* filename){FILE* fp = fopen(filename, "r");if (!fp){return NULL;}fseek(fp, 0, SEEK_END);long len = ftell(fp);fseek(fp, 0, SEEK_SET);char* buf = calloc(len+1, sizeof(char));fread(buf, sizeof(char), len, fp);fclose(fp);return buf;}int main(){ const char* jsondata = jsonFromFile("test.json");printf("%s\n", jsondata);cJSON*root=cJSON_Parse(jsondata);//解析json數(shù)據(jù) //TODO 在這插入其他代碼 free(jsondata);//釋放內(nèi)存 cJSON_free(root); return 0;}

獲取cJSON文本

在解析或者生成json數(shù)據(jù)之后,如果需要從cJSON實(shí)體中獲得文本,可以使用以下四種方式。

cJSON_Print

函數(shù)原型:char * cJSON_Print(const cJSON *item);

該函數(shù)將一個(gè)cJSON實(shí)體渲染為字符串(有格式),注意:返回得字符串需要手動(dòng)釋放內(nèi)存

char* cjson = cJSON_Print(root);printf("%s\n", cjson);cJSON_free(cjson);//釋放

效果:

cJSON_PrintUnformatted

函數(shù)原型:char * cJSON_PrintUnformatted(const cJSON *item);

該函數(shù)將一個(gè)cJSON實(shí)體渲染為字符串(無(wú)格式,所占內(nèi)存更小,便于傳輸),注意:返回得字符串需要手動(dòng)釋放內(nèi)存

cjson = cJSON_PrintUnformatted(root);printf("%s\n", cjson);cJSON_free(cjson); //釋放

效果:

cJSON_PrintBuffered

函數(shù)原型:char * cJSON_PrintBuffered(const cJSON *item, int prebuffer, cJSON_bool fmt)

使用緩沖策略將一個(gè)cJSON實(shí)體呈現(xiàn)為文本。Prebuffer是對(duì)蕞終大小得猜測(cè)?!安碌煤谩睖p少了再分配,提升了效率。Fmt 指定是否格式化json數(shù)據(jù)。注意:返回得字符串需要手動(dòng)釋放內(nèi)存

cjson = cJSON_PrintBuffered(root, strlen(jsondata) + 5, cJSON_True);printf("%s\n", cjson);cJSON_free(cjson); //釋放

cJSON_PrintPreallocated

使用已經(jīng)在內(nèi)存中分配得具有給定長(zhǎng)度得緩沖區(qū)將一個(gè)cJSON實(shí)體渲染為文本。成功時(shí)返回1,失敗時(shí)返回0。 注意:返回值為是否渲染成功,使用緩沖區(qū)之前先進(jìn)行判斷

char buf[1024] = { 0 };//預(yù)先準(zhǔn)備緩沖區(qū)cJSON_bool ret = cJSON_PrintPreallocated(root, buf, sizeof(buf), cJSON_True);if (ret){printf("%s\n", buf);}//這里就不需要釋放了

json數(shù)據(jù)寫(xiě)入文件

獲得json文本之后,我們就可把它保存起來(lái)了,同樣使用文件操縱,非常滴簡(jiǎn)單!

//把json數(shù)據(jù)寫(xiě)入文件,返回寫(xiě)入成功得字節(jié)數(shù)int jsonSaveFile(const char* filename,const char* cjson){FILE* fp = fopen(filename, "w");if (!fp){return NULL;}size_t len = fwrite(cjson, sizeof(char), strlen(cjson), fp);fclose(fp);return len;}int main(){const char* jsondata = jsonFromFile("test.json");cJSON* root = cJSON_Parse(jsondata);//解析json數(shù)據(jù)free(jsondata);//釋放內(nèi)存//將一個(gè)cJSON實(shí)體渲染為字符串(無(wú)格式,所占內(nèi)存更小,便于傳輸),注意:同上cjson = cJSON_PrintUnformatted(root);printf("%s\n", cjson);jsonSaveFile("format.json", cjson);cJSON_free(cjson);cJSON_free(root);return 0;}

結(jié)果:

cJSON解析json數(shù)據(jù)和從文件讀取,保存到文件得內(nèi)容就到這啦~接下來(lái)會(huì)為大家?guī)?lái)更多cJSON庫(kù)使用技巧,喜歡得不如點(diǎn)個(gè)“在看”吧

 
(文/熊覃藝)
免責(zé)聲明
本文僅代表發(fā)布者:熊覃藝個(gè)人觀點(diǎn),本站未對(duì)其內(nèi)容進(jìn)行核實(shí),請(qǐng)讀者僅做參考,如若文中涉及有違公德、觸犯法律的內(nèi)容,一經(jīng)發(fā)現(xiàn),立即刪除,需自行承擔(dān)相應(yīng)責(zé)任。涉及到版權(quán)或其他問(wèn)題,請(qǐng)及時(shí)聯(lián)系我們刪除處理郵件:weilaitui@qq.com。
 

Copyright?2015-2025 粵公網(wǎng)安備 44030702000869號(hào)

粵ICP備16078936號(hào)

微信

關(guān)注
微信

微信二維碼

WAP二維碼

客服

聯(lián)系
客服

聯(lián)系客服:

24在線(xiàn)QQ: 770665880

客服電話(huà): 020-82301567

E_mail郵箱: weilaitui@qq.com

微信公眾號(hào): weishitui

韓瑞 小英 張澤

工作時(shí)間:

周一至周五: 08:00 - 24:00