Fastjson Android設計


Fastjson Android採用ASMDeserializerFactory設計

ASMDeserializerFactory是用來動態使用ASM產生JavaBean的Deserializer,針對每個類別的特性進行特別優化,以獲得最快的效能。

1. 限制

1.1 虛擬機器相容

目前ASMDeserializerFactory不能在android的dalvik虛擬機器以及阿里雲OS的lemur虛擬機器上運作。

虛擬機器是否支援
#Oracle Hotspot支援

不支援

1.2 超多欄位類別

#目前ASMDeserializerFactory不支援超過200個欄位JavaBean。做反序列化的時候,需要定義局部變數保存parse的結果,目前的asm框架不能定義超過256個變量,目前保守的做法是,如果字段數量超過200個,則不使用ASMDeserializerFactory。

2 實作

#############2.1 建立實例######如果類有預設省public的建構函數,直接使用new來建立實例;否則使用JavaBeanDeserializer.createInstance(DefaultJSONParser, Type)來建立實例。 ##################2.2 定義欄位是否已經被parse的識別變數######每32個變數的flag保存在一個int類型的變數中,_setFlag和_isFlag分別用於設定和讀取其是否被parse。 ######