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));
    }
});
相关推荐
踏雪羽翼4 小时前
android TextView实现文字字符不同方向显示
android·自定义view·textview方向·文字方向·textview文字显示方向·文字旋转·textview文字旋转
lxysbly4 小时前
安卓玩MRP冒泡游戏:模拟器下载与使用方法
android·游戏
夏沫琅琊6 小时前
Android 各类日志全面解析(含特点、分析方法、实战案例)
android
程序员JerrySUN7 小时前
OP-TEE + YOLOv8:从“加密权重”到“内存中解密并推理”的完整实战记录
android·java·开发语言·redis·yolo·架构
TeleostNaCl8 小时前
Android | 启用 TextView 跑马灯效果的方法
android·经验分享·android runtime
TheNextByte19 小时前
Android USB文件传输无法使用?5种解决方法
android
quanyechacsdn10 小时前
Android Studio创建库文件用jitpack构建后使用implementation方式引用
android·ide·kotlin·android studio·implementation·android 库文件·使用jitpack
程序员陆业聪11 小时前
聊聊2026年Android开发会是什么样
android
编程大师哥11 小时前
Android分层
android
极客小云13 小时前
【深入理解 Android 中的 build.gradle 文件】
android·安卓·安全架构·安全性测试