本身實現一個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解析器

相關文章
相關標籤/搜索