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)單的。源碼地址?