先了解一下cJSON_Parse(),函數(shù)原型如下
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了瀍河免費(fèi)建站歡迎大家使用!CJSON_PUBLIC(cJSON *) cJSON_Parse(const char *value);
函數(shù)作用:將一個(gè)符合json數(shù)據(jù)結(jié)構(gòu)的字符串轉(zhuǎn)換為cJSON結(jié)構(gòu)體。
參數(shù):
value:輸入的字符串
返回值:如果解析正常,返回一個(gè)指向整個(gè)object的指針;如果解析失敗,則返回NULL。
注意:cJSON_Parse()函數(shù)會(huì)在堆區(qū)開辟空間,因此使用完后要及時(shí)調(diào)用cJSON_Delete釋放內(nèi)存,防止內(nèi)存泄漏問題
上代碼
#include#include "cJSON.h"
int main(int argc, char const *argv[])
{
char buf[512] = "111111qqq";
printf("buf:%s\n",buf);
cJSON* cjson = cJSON_Parse(buf);//將JSON字符串轉(zhuǎn)換成JSON結(jié)構(gòu)體
if(cjson == NULL)//判斷轉(zhuǎn)換是否成功
{
printf("Error before: [%s]\n", cJSON_GetErrorPtr());
return -1;
}
else
{
printf("cJSON錯(cuò)誤%s\n",cJSON_Print(cjson));//打包成功調(diào)用cJSON_Print打印輸出
}
cJSON_Delete(cjson);
return 0;
}
——————————————————————————————————————————
在進(jìn)行使用cJSON庫解析json字符串時(shí)發(fā)現(xiàn),如果只使用if(cjson == NULL)并不能判斷以數(shù)字開頭的字符串,函數(shù)返回值會(huì)保留字符串的數(shù)字部分
此時(shí)如果繼續(xù)去調(diào)用函數(shù)去反序列化json,由于格式不匹配,便會(huì)“段錯(cuò)誤”;
目前想到的解決方式如下:
既然cJSON_Parse()函數(shù)無法完全判斷,那就增加判斷條件,我選用的的是使用cJSON_GetObjectItem()函數(shù),判斷一下鍵值對(duì),該函數(shù)若查找的鍵沒有對(duì)應(yīng)值則會(huì)返回NULL;
json里面,鍵值對(duì)的值是可以為NULL的,因此選擇鍵值對(duì)時(shí)需要注意;
#include#include "cJSON.h"
int main(int argc, char const *argv[])
{
char buf[512] = "111111qqq";
printf("buf:%s\n",buf);
cJSON* cjson = cJSON_Parse(buf);//將JSON字符串轉(zhuǎn)換成JSON結(jié)構(gòu)體
if(cjson == NULL)//判斷轉(zhuǎn)換是否成功
{
printf("Error before: [%s]\n", cJSON_GetErrorPtr());
return -1;
}
else
{
if(cJSON_GetObjectItem(cjson, "uuid") == NULL)
{
printf("Error before: [%s]\n", cJSON_GetErrorPtr());
return -1;
}
printf("cJSON錯(cuò)誤%s\n",cJSON_Print(cjson));//打包成功調(diào)用cJSON_Print打印輸出
}
cJSON_Delete(cjson);
return 0;
}
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
文章標(biāo)題:關(guān)于cJSON庫,cJSON-創(chuàng)新互聯(lián)
文章URL:http://jinyejixie.com/article22/dehejc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、品牌網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)公司、標(biāo)簽優(yōu)化、關(guān)鍵詞優(yōu)化、品牌網(wǎng)站設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容