猿问
解析 JSON 语法的思路
本人想学习解析JSON字符串的思路,而非使用现成类库。但是现成类库都有点儿大,不想去读其源代码。所以在这里请教大神给指点指点。越详细越好,谢谢!!!
海绵宝宝撒
浏览 402
回答 2
2回答
慕村9548890
就以你在评论里面的{"Name":"aaa:bbb"}为例:一开始解析到{状态变为开始解析对象-解析到"状态变为开始解析键名--后面的Name四个字符都当做键名-又解析到"状态变为键名解析完毕,等待:-解析到:状态变为已经有:了-解析到"状态变为值是String,等待字符串--后面的aaa:bbb都当作字符串来处理,虽然里面有:,但是当前的状态是值是String,等待字符串所以会把它当作值保留下来-解析到"状态变为当前键值对完毕解析到}状态变为JSON对象解析完毕这种是通过状态机转移的方式来做的解析,不同状态间定义了严谨的转移条件就不会混乱(比如你举例字符串中的:不会被识别为键值之间的分隔符),大部分语法分析都是通过这种方式来完成的,全手写的话需要严格定义各个状态以及转移条件,挺费力的,尤其还得考虑嵌套转意等等。
0
0
0
白猪掌柜的
广告:isayme/tJson,400行代码!其实就是按照json格式解析,读每个字符前你都对其有个期望值,不是的话就是json格式有问题.比如你评论里说的{"Name":"aaa:bbb"},当你遇到字符a前面的"时,就一直读后面的字符,直到遇到新的"字符,所以中间遇到的:字符其实会被当做字符串的一部分处理.当然你可以多做一点,比如如果字符串值中包含转义字符(\")什么的~
0
0
0
随时随地看视频
慕课网APP
相关分类
JavaScript
我要回答