本身業餘時間弄得的一個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行不到,下面就是路徑,能夠戳進去看看