json是常用的数据传输协议,具有一系列优点。。。
标准的json字符串如下:
{"name":"tom","age":"18","love":["apple","banana","ice"]}
这种格式功能强大,但是因为有引号的存在,给传输带来不便,如将一串格式化的json放进xml里面传输(好吧,确实遇到过,当时直接把json字符串base64了),我们可以使用一种简化过的类json作为信息交换协议,这种简化的json字符串可能是这个样子的:
{name:tom,age:18,love:[apple,banana,ice]}
少了引号,键和值中不能出现 {,[ 等关键字,但是影响不大,我们需要的只是一种简化的协议,下面分析一下编码和解码过程。
首先,在工具类中将关键字符定义出来:
编码过程较为简单,object以 { } 包含,array 以 [ ] 包含,直接使用foreach循环遍历对象及数组属性即可
解码过程可能先将编码得出的字符串分割成包含关键字符和字符串的数组:
然后使用一个简单的递归算法,解析成原json对象:
最后检测一下结果:
因为是简化的, 所以实现还是挺简单的。源码地址