簡(jiǎn)化版json協(xié)議編碼與解碼實(shí)現(xiàn)

json是常用的數(shù)據(jù)傳輸協(xié)議,具有一系列優(yōu)點(diǎn)。。。

標(biāo)準(zhǔn)的json字符串如下:

{"name":"tom","age":"18","love":["apple","banana","ice"]}

這種格式功能強(qiáng)大,但是因?yàn)橛幸?hào)的存在,給傳輸帶來(lái)不便,如將一串格式化的json放進(jìn)xml里面?zhèn)鬏敚ê冒?,確實(shí)遇到過,當(dāng)時(shí)直接把json字符串base64了),我們可以使用一種簡(jiǎn)化過的類json作為信息交換協(xié)議,這種簡(jiǎn)化的json字符串可能是這個(gè)樣子的:

{name:tom,age:18,love:[apple,banana,ice]}

少了引號(hào),鍵和值中不能出現(xiàn) {,[ 等關(guān)鍵字,但是影響不大,我們需要的只是一種簡(jiǎn)化的協(xié)議,下面分析一下編碼和解碼過程。

首先,在工具類中將關(guān)鍵字符定義出來(lái):

編碼過程較為簡(jiǎn)單,object以 { } 包含,array 以 [ ] 包含,直接使用foreach循環(huán)遍歷對(duì)象及數(shù)組屬性即可

解碼過程可能先將編碼得出的字符串分割成包含關(guān)鍵字符和字符串的數(shù)組:

然后使用一個(gè)簡(jiǎn)單的遞歸算法,解析成原json對(duì)象:


最后檢測(cè)一下結(jié)果:


因?yàn)槭呛?jiǎn)化的, 所以實(shí)現(xiàn)還是挺簡(jiǎn)單的。源碼地址?


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容