摘要:六原理說明侵入編譯流程,在編譯過程中,修改庫的字節碼,修改解析相關的方法,在數據類型不一致的時候,跳過當前字段的解析。
一、目錄
1.gson-plugin告別Json數據類型不一致(一)
2.gson-plugin基礎源碼分析(二)
3.gson-plugin深入源碼分析(三)
4.gson-plugin如何在JitPack發布(四)
看完這4篇文章,對Gson解析會有更加深刻的認識,對Android的編譯流程會有更加深刻的認識,寫Android Plugin插件不在話下,修改Java字節碼小意思,發布一個開源項目so easy!
二、項目地址項目地址:github-gson-plugin
三、gson-plugin強化Android-Json解析的插件,解決Android-Json解析數據類型轉換異常,不影響對Gson庫的使用
四、誕生背景1.Android主要開發語言是Java,屬于強數據類型語言,不少公司后臺開發采用的是PHP,屬于弱數據類型的語言。
2.客戶端與服務器在進行數據傳輸的過程中,常常因為某個字段數據類型不一致,導致客戶端gson解析失敗,從而導致整個頁面的數據均無法展示。
1.當某個字段解析失敗的時候,跳過該字段繼續解析其它字段,保證其它正常數據可以展示出來。
2.當某個字段解析失敗的時候,通過觀察者模式,將異常拋出,開發者在收到異常后可以進行相應的處理(如將異常日志上傳到服務器,然后推動服務端RD解決)。
3.不影響對Gson庫的使用。
侵入編譯流程,在編譯過程中,修改gson庫的字節碼,修改gson解析相關的方法,在數據類型不一致的時候,跳過當前字段的解析。
七、接入文檔gson-plugin 接入文檔
1.工程根目錄加入repositories
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加入依賴
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.** { *; }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/72239.html
摘要:一項目地址項目地址二與關系普通的庫可以通過源碼的方式直接引入并使用,是一個插件,無法通過源碼的方式使用,只能編譯并發布以后,才能被正常使用。是一個代碼倉庫,我們可以將源代碼托管在這個平臺上。 一、項目地址 項目地址:github-gson-plugin 二、github與JitPack關系 1.普通的java庫可以通過源碼的方式直接引入并使用,gson-plugin是一個插件,無法通過...
摘要:六修改內部類的方法這個的方法是對類型的數據進行解析,我們判斷輸入的數據類型不是類型,就直接跳過解析,核心是在方法中插入方法。每一個類每一個內部類每一個匿名內部類,都會生成一個獨立的文件,如。 一、項目地址 項目地址:github-gson-plugin 二、ReaderTools解析 /** * Created by tangfuling on 2018/10/23. */ pu...
閱讀 2604·2021-11-02 14:39
閱讀 4322·2021-10-11 10:58
閱讀 1446·2021-09-06 15:12
閱讀 1837·2021-09-01 10:49
閱讀 1326·2019-08-29 18:31
閱讀 1882·2019-08-29 16:10
閱讀 3331·2019-08-28 18:21
閱讀 867·2019-08-26 10:42