1.gson-plugin告别Json数据类型不一致(一)
2.gson-plugin基础源码分析(二)
3.gson-plugin深刻源码分析(三)
4.gson-plugin如何在JitPack发布(四)git
看完这4篇文章,对Gson解析会有更加深入的认识,对Android的编译流程会有更加深入的认识,写Android Plugin插件不在话下,修改Java字节码小意思,发布一个开源项目so easy!github
项目地址:github-gson-pluginjson
强化Android-Json解析的插件,解决Android-Json解析数据类型转换异常,不影响对Gson库的使用segmentfault
1.Android主要开发语言是Java,属于强数据类型语言,很多公司后台开发采用的是PHP,属于弱数据类型的语言。
2.客户端与服务器在进行数据传输的过程当中,经常由于某个字段数据类型不一致,致使客户端gson解析失败,从而致使整个页面的数据均没法展现。服务器
1.当某个字段解析失败的时候,跳过该字段继续解析其它字段,保证其它正常数据能够展现出来。
2.当某个字段解析失败的时候,经过观察者模式,将异常抛出,开发者在收到异常后能够进行相应的处理(如将异常日志上传到服务器,而后推进服务端RD解决)。
3.不影响对Gson库的使用。app
侵入编译流程,在编译过程当中,修改gson库的字节码,修改gson解析相关的方法,在数据类型不一致的时候,跳过当前字段的解析。maven
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.** { *; }