首先,為什么需要定制呢?很多同學可能覺得默認的不也挺好的嘛?最開始,我也是覺得的,而且我們一開始也是用默認的解析方式的,因為我們與外部約定的數(shù)據(jù)格式一直都比較穩(wěn)定。但當外部數(shù)據(jù)不穩(wěn)定,那么Gson默認配置的弊端就體現(xiàn)出來。很多同學可能覺得,你應該叫后臺改啊,坦白說,我也覺得是這樣的,畢竟我們都是按協(xié)議去開發(fā)數(shù)據(jù)模型的,你不按約定的協(xié)議去做,不是你的鍋,難道是我的?。?!首先,一點是明確的,那就是如果后臺沒有按雙方之前約定的格式輸出數(shù)據(jù),那一定是后臺的問題,這點,我也不否認的。

  但是,我始終覺得,我們所有的開發(fā)和努力都應該是為了更好地服務用戶而做的。簡而言之,我們是為產(chǎn)品的最終用戶負責的。而作為最靠近用戶一端的APP,責無旁貸地要肩負起這個潛在的責任。后臺數(shù)據(jù)錯了,我們可以認為外部環(huán)境有問題了,APP運行的外部環(huán)境出問題了,當然APP肯定很難獨善其身,但我們更應該盡可能地減少對用戶的影響,而之后的分鍋大會畢竟是我們內部的事了……

  好,那我們說說,為什么Gson的默認配置有那些對于我們來說事缺陷的問題,

  1、一個字段有錯,則整個字段出錯。//但是我們希望這個字段出錯,就不要解析這個字段了;

  2、字段如果是null的話,則該字段就為null。//但是我們希望所有字段不要有null值存在,特別是基本數(shù)據(jù)類型;

  3、如果該字段是一個對象,則定義為String就報錯。//但是我們希望的是無論是什么字段,只要定義為String就永遠是對的;

  而這些要求Gson的默認配置都是不能滿足的,要自己去定義。很多同學可能覺得,要求這么多,還不如自己做個Json解析器得了。真心話是:不到萬不得已,不要自己去造輪子。因為人生苦短……,如果必須得造,也盡量參考成熟的輪子,畢竟已經(jīng)使用這么多年,總歸會有些經(jīng)驗值得借鑒的。

  我們定制的時候更多也是參考內置解析器去做的,有的是