Json语法解析

来源:互联网 发布:算法概念和特征 编辑:程序博客网 时间:2024/05/17 00:14

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。简单的说,它是一种数据格式,一般用于不同的服务器之间传递数据。比如,一个web服务器要给另一个服务器传递一个信息:馒头8个。怎么传?这时可以把这个信息封装成json格式({“馒头”:8}),再传出去,对端服务器对json进行解析,就能得到对应的信息。

目前,不管是在linux系统上,还是java环境中,都有现成的json库。但是,在一些小巧玲珑的嵌入式操作系统中,这些库显得臃肿了。本人刚好就碰到了这种情况,所以要自己实现一个简单的json解析功能。

首先,从语法开始了解。网上有很多语法图,这里搬一个来。






相信语法图大家都不陌生,那么,接下来对语法图进行分析。

首先,定义几个对象:


然后定义几个堆栈操作:


其中,入栈不解释。出栈,一般会抛出一个对象出来,这个对象会作为新的输入,推动状态机向前动。获取到键和获取到值,主要是为了在获取到这两个对象时,进行相关记录。步进和进入两个操作的区别在于要不要从原始字符串中输入字符。

接着对输入的字符和对象进行分类:


最后,开始状态机的构造:


这个状态机,共有40个状态,每个状态有多个输入可以驱动,没有定义的输入,则表示语法错误。每个输入都对应一个下一状态ID,动作,和输出对象。状态机运行时,对于同一个状态的不同输入,按索引值从小到大的优先级进行匹配。语法图和状态机中,都不包含对额外空字符的解析。

OK,到此,编码前的准备基本结束。

编码,测试桩,Makefile等资源已上传:http://download.csdn.net/detail/zhfk2004/8342233

0 0