本身实现一个json解析器,代码提供出来

本身业余时间弄得的一个json解析器,提供json解析,序列化,反序列化的功能,只是基本的,可能还有不少bug没注意到,可是当个玩具,来给你们参考参考。java

json反序列化:git

Mson mson=new Mson();

Student stu=mson.fromJson(jsonString,Student.class);

代码相似gson,参考了他的api。经过词法分析将jsonString->Token流,再通过语法分析将Token流转成一个个的json类型对象(语法树),数字类型就是NumberJsonValue,字符串类型就是StringJsonValue,等等。json

经过语法树进行解析执行,而后进行类型判断,根据指定类型反射为指定属性设置值,这是一个递归调用的过程,写的时候注意点就好了。api


json序列化:.net

Mson mson=new Mson();

Student s=new Student();
s.setId(1);
s.setName("jack");

String json=mson.toJson(s);

这个就比较简单了,每一个类型对应了他的序列化处理方式,如:code

List集合--->ListSerializer类处理对象

Map集合--->MapSerializer类处理递归

Student类--->ObjectSerialize类处理element

字符串-->StringSerializer类处理字符串

数字--->NumberSerializer类处理

等等

每一个类分别有本身序列化成字符串的处理方式,若有的是{"key":"value"},有的是["element","element"],等等。


这就是我写这个解析器的整个思路,如今代码应该还只是个玩具,不少bug,提供出来,只是供你们吐槽也行,参考也行,看个热闹就ok了。

整个项目很简单,代码量也很少,2k行不到,下面就是路径,能够戳进去看看

个人json解析器

相关文章
相关标签/搜索