成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

gson-plugin告別Json數(shù)據(jù)類型不一致(一)

canopus4u / 1251人閱讀

摘要:六原理說明侵入編譯流程,在編譯過程中,修改庫的字節(jié)碼,修改解析相關(guān)的方法,在數(shù)據(jù)類型不一致的時(shí)候,跳過當(dāng)前字段的解析。

一、目錄

1.gson-plugin告別Json數(shù)據(jù)類型不一致(一)
2.gson-plugin基礎(chǔ)源碼分析(二)
3.gson-plugin深入源碼分析(三)
4.gson-plugin如何在JitPack發(fā)布(四)

看完這4篇文章,對Gson解析會(huì)有更加深刻的認(rèn)識,對Android的編譯流程會(huì)有更加深刻的認(rèn)識,寫Android Plugin插件不在話下,修改Java字節(jié)碼小意思,發(fā)布一個(gè)開源項(xiàng)目so easy!

二、項(xiàng)目地址

項(xiàng)目地址:github-gson-plugin

三、gson-plugin

強(qiáng)化Android-Json解析的插件,解決Android-Json解析數(shù)據(jù)類型轉(zhuǎn)換異常,不影響對Gson庫的使用

四、誕生背景

1.Android主要開發(fā)語言是Java,屬于強(qiáng)數(shù)據(jù)類型語言,不少公司后臺開發(fā)采用的是PHP,屬于弱數(shù)據(jù)類型的語言。
2.客戶端與服務(wù)器在進(jìn)行數(shù)據(jù)傳輸?shù)倪^程中,常常因?yàn)槟硞€(gè)字段數(shù)據(jù)類型不一致,導(dǎo)致客戶端gson解析失敗,從而導(dǎo)致整個(gè)頁面的數(shù)據(jù)均無法展示。

五、功能描述

1.當(dāng)某個(gè)字段解析失敗的時(shí)候,跳過該字段繼續(xù)解析其它字段,保證其它正常數(shù)據(jù)可以展示出來。
2.當(dāng)某個(gè)字段解析失敗的時(shí)候,通過觀察者模式,將異常拋出,開發(fā)者在收到異常后可以進(jìn)行相應(yīng)的處理(如將異常日志上傳到服務(wù)器,然后推動(dòng)服務(wù)端RD解決)。
3.不影響對Gson庫的使用。

六、原理說明

侵入編譯流程,在編譯過程中,修改gson庫的字節(jié)碼,修改gson解析相關(guān)的方法,在數(shù)據(jù)類型不一致的時(shí)候,跳過當(dāng)前字段的解析。

七、接入文檔

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.可選調(diào)用(監(jiān)聽異常json字段,建議收到后上報(bào)給服務(wù)器)

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.** { *; }

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/72239.html

相關(guān)文章

  • gson-plugin如何在JitPack發(fā)布(四)

    摘要:一項(xiàng)目地址項(xiàng)目地址二與關(guān)系普通的庫可以通過源碼的方式直接引入并使用,是一個(gè)插件,無法通過源碼的方式使用,只能編譯并發(fā)布以后,才能被正常使用。是一個(gè)代碼倉庫,我們可以將源代碼托管在這個(gè)平臺上。 一、項(xiàng)目地址 項(xiàng)目地址:github-gson-plugin 二、github與JitPack關(guān)系 1.普通的java庫可以通過源碼的方式直接引入并使用,gson-plugin是一個(gè)插件,無法通過...

    StonePanda 評論0 收藏0
  • gson-plugin深入源碼分析(三)

    摘要:六修改內(nèi)部類的方法這個(gè)的方法是對類型的數(shù)據(jù)進(jìn)行解析,我們判斷輸入的數(shù)據(jù)類型不是類型,就直接跳過解析,核心是在方法中插入方法。每一個(gè)類每一個(gè)內(nèi)部類每一個(gè)匿名內(nèi)部類,都會(huì)生成一個(gè)獨(dú)立的文件,如。 一、項(xiàng)目地址 項(xiàng)目地址:github-gson-plugin 二、ReaderTools解析 /** * Created by tangfuling on 2018/10/23. */ pu...

    oujie 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<