美文网首页
1.gson-plugin告别Json数据类型不一致(一)

1.gson-plugin告别Json数据类型不一致(一)

作者: tangfuling1991 | 来源:发表于2018-11-18 20:34 被阅读0次

一、目录

1.gson-plugin告别Json数据类型不一致(一)
2.gson-plugin基础源码分析(二)
3.gson-plugin深入源码分析(三)
4.gson-plugin如何在JitPack发布(四)

看完这4篇文章,对Gson解析会有更加深刻的认识,对Android的编译流程会有更加深刻的认识,写Android Plugin插件不在话下,修改Java字节码小意思,发布一个开源项目so easy!

二、项目地址

项目地址:github-gson-plugin

三、gson-plugin

强化Android-Json解析的插件,解决Android-Json解析数据类型转换异常,不影响对Gson库的使用

四、诞生背景

1.Android主要开发语言是Java,属于强数据类型语言,不少公司后台开发采用的是PHP,属于弱数据类型的语言。
2.客户端与服务器在进行数据传输的过程中,常常因为某个字段数据类型不一致,导致客户端gson解析失败,从而导致整个页面的数据均无法展示。

五、功能描述

1.当某个字段解析失败的时候,跳过该字段继续解析其它字段,保证其它正常数据可以展示出来。
2.当某个字段解析失败的时候,通过观察者模式,将异常抛出,开发者在收到异常后可以进行相应的处理(如将异常日志上传到服务器,然后推动服务端RD解决)。
3.不影响对Gson库的使用。

六、原理说明

侵入编译流程,在编译过程中,修改gson库的字节码,修改gson解析相关的方法,在数据类型不一致的时候,跳过当前字段的解析。

七、接入文档

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.可选调用(监听异常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.** { *; }

相关文章

  • 1.gson-plugin告别Json数据类型不一致(一)

    一、目录 1.gson-plugin告别Json数据类型不一致(一)2.gson-plugin基础源码分析(二)3...

  • SQL中的JSON数据类型

    SQL中的JSON数据类型 概述 MySQL支持原生JSON类型,使用JSON数据类型相较于将JSON格式的字符串...

  • MySQL JSON类型

    MySQL支持JSON数据类型。相比于Json格式的字符串类型,JSON数据类型的优势有: 存储在JSON列中的J...

  • day14、学生管理系统 2019-01-10

    一、复习 1.json 数据 注意:一个 json 数据有且只有一个数据,并且数据类型是 json 支持的数据类型...

  • MySQL之JSON数据类型CRUD

    JSON数据类型: 从mysql5.7.8开始开始支持,json数据类型。可以通过客户端创建json字段表并操作检...

  • js初识第十节

    基本数据类型和引用数据类型的认识 对象的基本概念 json数据类型的认识 json数据对象的读取

  • Day13——json_requests_exception

    一、json 使用 Json 函数需要导入 json 库:import json I. 数据类型转化对照表 Pyt...

  • json、多任务

    json json.loads() : 将json字符串转化为Python数据类型json.dumps() : 将...

  • Json

    json.loads() :将字符串转换为Python数据类型json.dumps() :将Python数据类型转...

  • MySQL处理Json数据

    备注: 版本: MySQL 8.0 一. Json数据存储 MySQL 8.0提供了json数据类型来存储json...

网友评论

      本文标题:1.gson-plugin告别Json数据类型不一致(一)

      本文链接:https://www.haomeiwen.com/subject/jhxnfqtx.html