Gson 解析容错框架

官网

GitHub - getActivity/GsonFactory: Gson 解析容错框架,愿从此再无 Json 解析报错,另外还适配了 Kotlin 默认值,和后台返回空值的情况

项目简介

Gson 解析容错框架,愿从此再无 Json 解析报错,另外还适配了 Kotlin 默认值,和后台返回空值的情况

集成步骤

  • 如果你的项目 Gradle 配置是在 7.0 以下,需要在 build.gradle 文件中加入

    allprojects {
    repositories {
    // JitPack 远程仓库:https://jitpack.io
    maven { url 'https://jitpack.io' }
    }
    }

  • 如果你的 Gradle 配置是 7.0 及以上,则需要在 settings.gradle 文件中加入

    dependencyResolutionManagement {
    repositories {
    // JitPack 远程仓库:https://jitpack.io
    maven { url 'https://jitpack.io' }
    }
    }

  • 配置完远程仓库后,在项目 app 模块下的 build.gradle 文件中加入远程依赖

    android {
    // 支持 JDK 1.8
    compileOptions {
    targetCompatibility JavaVersion.VERSION_1_8
    sourceCompatibility JavaVersion.VERSION_1_8
    }
    }

    dependencies {
    // Gson 解析容错:https://github.com/getActivity/GsonFactory
    implementation 'com.github.getActivity:GsonFactory:8.0'
    // Json 解析框架:https://github.com/google/gson
    implementation 'com.google.code.gson:gson:2.10.1'
    }

  • 需要注意的是:Gson 框架必须使用 2.9.0 及以上版本,否则将会出现版本兼容问题

使用文档

  • 请使用框架返回的 Gson 对象来代替项目中的 Gson 对象

    // 获取单例的 Gson 对象(已处理容错)
    Gson gson = GsonFactory.getSingletonGson();

  • 因为框架中的 Gson 对象已经对解析规则进行了容错处理

其他 API

复制代码
// 设置自定义的 Gson 对象
GsonFactory.setSingletonGson(Gson gson);

// 创建一个 Gson 构建器(已处理容错)
GsonBuilder gsonBuilder = GsonFactory.newGsonBuilder();

// 注册类型适配器
GsonFactory.registerTypeAdapterFactory(TypeAdapterFactory factory);

// 注册构造函数创建器
GsonFactory.registerInstanceCreator(Type type, InstanceCreator<?> creator);

// 添加反射访问过滤器
GsonFactory.addReflectionAccessFilter(ReflectionAccessFilter filter);

// 设置 Json 解析容错监听
GsonFactory.setJsonCallback(new JsonCallback() {

    @Override
    public void onTypeException(TypeToken<?> typeToken, String fieldName, JsonToken jsonToken) {
        // Log.e("GsonFactory", "类型解析异常:" + typeToken + "#" + fieldName + ",后台返回的类型为:" + jsonToken);
        // 上报到 Bugly 错误列表中
        CrashReport.postCatchedException(new IllegalArgumentException("类型解析异常:" + typeToken + "#" + fieldName + ",后台返回的类型为:" + jsonToken));
    }
});
相关推荐
uwvwko12 小时前
BUUCTF——web刷题第一页题解
android·前端·数据库·php·web·ctf
fzxwl12 小时前
隆重推荐(Android 和 iOS)UI 自动化工具—Maestro
android·ui·ios
LittleLoveBoy14 小时前
踩坑:uiautomatorviewer.bat 打不开
android
居然是阿宋15 小时前
Android核心系统服务:AMS、WMS、PMS 与 system_server 进程解析
android
CGG9217 小时前
【单例模式】
android·java·单例模式
kp0000018 小时前
PHP弱类型安全漏洞解析与防范指南
android·开发语言·安全·web安全·php·漏洞
编程乐学(Arfan开发工程师)1 天前
06、基础入门-SpringBoot-依赖管理特性
android·spring boot·后端
androidwork1 天前
使用 Kotlin 和 Jetpack Compose 开发 Wear OS 应用的完整指南
android·kotlin
繁依Fanyi1 天前
Animaster:一次由 CodeBuddy 主导的 CSS 动画编辑器诞生记
android·前端·css·编辑器·codebuddy首席试玩官
奔跑吧 android1 天前
【android bluetooth 框架分析 02】【Module详解 6】【StorageModule 模块介绍】
android·bluetooth·bt·aosp13·storagemodule