本身业余时间弄得的一个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行不到,下面就是路径,能够戳进去看看