cJSON源碼學(xué)習(xí)(一)


(一)準備工作

1.安裝Cmake

在官網(wǎng)上下載"xx.tar.gz"源碼安裝包健田,輸入以下命令傻铣。

在官網(wǎng)上下載了壓縮包后褪储,在ubuntu上依次運行下列命令就可以完成安裝:


2.下載安裝cJSON

cJSON官網(wǎng)下載:https://sourceforge.net/projects/cjson/

cJSON ?GitHub:https://github.com/DaveGamble/cJSON

我是使用git clone直接從github上獲取源碼。之后通過cmake工具完成cJSON的安裝垦江。

(二)cJSON簡介

JSON:JavaScript對象表示法(JavaScript Object Notation)嗓化。是一種輕量級的數(shù)據(jù)交換格式棠涮。它基于ECMAScript的一個子集。JSON采用完全獨立于語言的文本格式刺覆,但是也使用了類似C語音家族的習(xí)慣(包括C严肪、C++、C#谦屑、Java驳糯、JavaScript、Perl氢橙、Python等)酝枢。這些特性使JSON成為理想的數(shù)據(jù)交換語言。易于人閱讀和編寫悍手,同時也易于機器解析和生成(一般用于提升網(wǎng)絡(luò)傳輸速率)帘睦。JSON和XML的可讀性可謂不相上下,JSON擁有更簡易的語法坦康,XML擁有更規(guī)范的標簽形式竣付。

cJSON是C語言中的一個JSON編解碼器,非常輕量級滞欠,C文件只有不到一千行古胆,代碼可讀性也很好,作為項目學(xué)習(xí)是一個不錯的選擇仑撞。對于json格式編碼與解碼赤兴,其實就是類似于一個解釋器,主要原理還是運用遞歸隧哮。

(三)cJSON源碼分析

接下來我將從四個方面來逐步學(xué)習(xí)源碼內(nèi)容桶良。


1.cJSON結(jié)構(gòu)體

cJSON對象的數(shù)據(jù)結(jié)構(gòu)如下:


不管是數(shù)值、字符串沮翔、數(shù)組還是對象類型都使用該結(jié)構(gòu)體陨帆,類型信息通過標識符type來進行判斷,cJSON總共定義了7種類型采蚀。

對于數(shù)組和對象類型疲牵,采用雙向鏈表來實現(xiàn),鏈表中的每個節(jié)點表示數(shù)組中的一個元素或者對象中的一個字段榆鼠。其中child表示頭節(jié)點纲爸,next、prev分別表示下一個節(jié)點和前一個節(jié)點妆够。valuestring识啦、valueint负蚊、valuedouble分別表示字符串、整數(shù)颓哮、浮點數(shù)的字面量家妆。

所產(chǎn)生的結(jié)構(gòu)形式如下例:


下一篇再把或許寫完。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末冕茅,一起剝皮案震驚了整個濱河市伤极,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌姨伤,老刑警劉巖哨坪,帶你破解...
    沈念sama閱讀 222,464評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異乍楚,居然都是意外死亡齿税,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評論 3 399
  • 文/潘曉璐 我一進店門炊豪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來凌箕,“玉大人,你說我怎么就攤上這事词渤∏2眨” “怎么了?”我有些...
    開封第一講書人閱讀 169,078評論 0 362
  • 文/不壞的土叔 我叫張陵缺虐,是天一觀的道長芜壁。 經(jīng)常有香客問我,道長高氮,這世上最難降的妖魔是什么慧妄? 我笑而不...
    開封第一講書人閱讀 59,979評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮剪芍,結(jié)果婚禮上塞淹,老公的妹妹穿的比我還像新娘。我一直安慰自己罪裹,他們只是感情好饱普,可當我...
    茶點故事閱讀 69,001評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著状共,像睡著了一般套耕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上峡继,一...
    開封第一講書人閱讀 52,584評論 1 312
  • 那天冯袍,我揣著相機與錄音,去河邊找鬼碾牌。 笑死康愤,一個胖子當著我的面吹牛关划,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播翘瓮,決...
    沈念sama閱讀 41,085評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼裤翩!你這毒婦竟也來了资盅?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,023評論 0 277
  • 序言:老撾萬榮一對情侶失蹤踊赠,失蹤者是張志新(化名)和其女友劉穎呵扛,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體筐带,經(jīng)...
    沈念sama閱讀 46,555評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡今穿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,626評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了伦籍。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蓝晒。...
    茶點故事閱讀 40,769評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖帖鸦,靈堂內(nèi)的尸體忽然破棺而出芝薇,到底是詐尸還是另有隱情,我是刑警寧澤作儿,帶...
    沈念sama閱讀 36,439評論 5 351
  • 正文 年R本政府宣布洛二,位于F島的核電站,受9級特大地震影響攻锰,放射性物質(zhì)發(fā)生泄漏晾嘶。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,115評論 3 335
  • 文/蒙蒙 一娶吞、第九天 我趴在偏房一處隱蔽的房頂上張望垒迂。 院中可真熱鬧,春花似錦妒蛇、人聲如沸娇斑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,601評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽毫缆。三九已至,卻和暖如春乐导,著一層夾襖步出監(jiān)牢的瞬間苦丁,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,702評論 1 274
  • 我被黑心中介騙來泰國打工物臂, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留旺拉,地道東北人产上。 一個月前我還...
    沈念sama閱讀 49,191評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像蛾狗,于是被迫代替她去往敵國和親晋涣。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,781評論 2 361