最近在练习python,于是尝试使用python编写json解析器,目前已经大体实现,通过了jsonTestFile.txt中的测试例子。代码github网址为:https://github.com/siukwan/jsonparser
下面重点介绍编写过程中遇到的一些需要注意的问题。
1.json的主体内容
我这里所提及的json主体内容主要是指两大类:1.对象object;2.数组array。
因为一个json格式的字符串不是一个object就是一个array。所以编写jsonparser的类中,有_parse_object和_parse_array两个函数。首先通过parse函数直接判断开始的符号为{还是[进而决定调用_parse_object还是_parse_array。
2.json中的key
标准json格式中的key是string类型,使用双引号包括。其中类中的_parse_string函数专门用来解析key。
3.json中的value
json中的value相对复杂,类型可以是object,array,string,数字,true,false,null。
在编写过程中,我刚开始没有编写解析嵌套的object和array,先编写了_parse_number和_parse_string。我们在解析了key后,会遇到冒号:,然后跳过冒号,我们进一步判断非空字符,如果为”,则接下来是string,否则的话接下来是number。
number中需要注意的是,我们要判断是整型还是浮点数,需要进行一个int或float的强制转换。json中小数的表达方式有科学