成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

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

canopus4u / 1310人閱讀

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

一、目錄

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

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

二、項目地址

項目地址:github-gson-plugin

三、gson-plugin

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

四、誕生背景

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

五、功能描述

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

六、原理說明

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

七、接入文檔

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字段,建議收到后上報給服務(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://m.hztianpu.com/yun/72239.html

相關(guān)文章

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

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

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

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

    oujie 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<