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

1、目錄

1.gson-plugin告別Json數據類型不一致(一)
2.gson-plugin基礎源碼分析(二)
3.gson-plugin深刻源碼分析(三)
4.gson-plugin如何在JitPack發佈(四)git

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

2、項目地址

項目地址:github-gson-pluginjson

3、gson-plugin

強化Android-Json解析的插件,解決Android-Json解析數據類型轉換異常,不影響對Gson庫的使用segmentfault

4、誕生背景

1.Android主要開發語言是Java,屬於強數據類型語言,很多公司後臺開發採用的是PHP,屬於弱數據類型的語言。
2.客戶端與服務器在進行數據傳輸的過程當中,經常由於某個字段數據類型不一致,致使客戶端gson解析失敗,從而致使整個頁面的數據均沒法展現。服務器

5、功能描述

1.當某個字段解析失敗的時候,跳過該字段繼續解析其它字段,保證其它正常數據能夠展現出來。
2.當某個字段解析失敗的時候,經過觀察者模式,將異常拋出,開發者在收到異常後能夠進行相應的處理(如將異常日誌上傳到服務器,而後推進服務端RD解決)。
3.不影響對Gson庫的使用。app

6、原理說明

侵入編譯流程,在編譯過程當中,修改gson庫的字節碼,修改gson解析相關的方法,在數據類型不一致的時候,跳過當前字段的解析。maven

7、接入文檔

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.** { *; }
相關文章
相關標籤/搜索