(一)準備工作
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)形式如下例:
下一篇再把或許寫完。