1.gson-plugin告別Json數據類型不一致(一)
2.gson-plugin基礎源碼分析(二)
3.gson-plugin深刻源碼分析(三)
4.gson-plugin如何在JitPack發佈(四)git
看完這4篇文章,對Gson解析會有更加深入的認識,對Android的編譯流程會有更加深入的認識,寫Android Plugin插件不在話下,修改Java字節碼小意思,發佈一個開源項目so easy!github
項目地址:github-gson-pluginjson
強化Android-Json解析的插件,解決Android-Json解析數據類型轉換異常,不影響對Gson庫的使用segmentfault
1.Android主要開發語言是Java,屬於強數據類型語言,很多公司後臺開發採用的是PHP,屬於弱數據類型的語言。
2.客戶端與服務器在進行數據傳輸的過程當中,經常由於某個字段數據類型不一致,致使客戶端gson解析失敗,從而致使整個頁面的數據均沒法展現。服務器
1.當某個字段解析失敗的時候,跳過該字段繼續解析其它字段,保證其它正常數據能夠展現出來。
2.當某個字段解析失敗的時候,經過觀察者模式,將異常拋出,開發者在收到異常後能夠進行相應的處理(如將異常日誌上傳到服務器,而後推進服務端RD解決)。
3.不影響對Gson庫的使用。app
侵入編譯流程,在編譯過程當中,修改gson庫的字節碼,修改gson解析相關的方法,在數據類型不一致的時候,跳過當前字段的解析。maven
gson-plugin 接入文檔
1.工程根目錄加入repositorieside
buildscript { repositories { maven { url 'https://jitpack.io' } } } allprojects { repositories { maven { url 'https://jitpack.io' } } }
2.工程根目錄build.gradle加入ClassPath源碼分析
dependencies { classpath 'com.github.LianjiaTech:gson-plugin:2.0.1' }
3.工程app目錄build.gradle加入依賴gradle
apply plugin: 'com.ke.gson.plugin'
4.可選調用(監聽異常json字段,建議收到後上報給服務器)
ReaderTools.setListener(new ReaderTools.JsonSyntaxErrorListener() { @Override public void onJsonSyntaxError(String exception, String invokeStack) { //upload error info to server Log.e("test", "json syntax exception: " + exception); Log.e("test", "json syntax invokeStack: " + invokeStack); } });
5.添加混淆keep
-keep class com.google.gson.** { *; } -keep class com.ke.gson.** { *; }