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.** { *; }
相关文章
相关标签/搜索