亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

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

canopus4u / 1403人閱讀

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

一、目錄

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

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

二、項(xiàng)目地址

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

三、gson-plugin

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

四、誕生背景

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

五、功能描述

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

六、原理說(shuō)明

侵入編譯流程,在編譯過(guò)程中,修改gson庫(kù)的字節(jié)碼,修改gson解析相關(guān)的方法,在數(shù)據(jù)類型不一致的時(shí)候,跳過(guò)當(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)聽(tīng)異常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)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/72239.html

相關(guān)文章

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

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

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

    摘要:六修改內(nèi)部類的方法這個(gè)的方法是對(duì)類型的數(shù)據(jù)進(jìn)行解析,我們判斷輸入的數(shù)據(jù)類型不是類型,就直接跳過(guò)解析,核心是在方法中插入方法。每一個(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 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<