Gson 解析容错框架

news/2024/11/16 23:36:58/

官网

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

项目简介

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

集成步骤

  • 如果你的项目 Gradle 配置是在 7.0 以下,需要在 build.gradle 文件中加入
allprojects {repositories {// JitPack 远程仓库:https://jitpack.iomaven { url 'https://jitpack.io' }}
}
  • 如果你的 Gradle 配置是 7.0 及以上,则需要在 settings.gradle 文件中加入
dependencyResolutionManagement {repositories {// JitPack 远程仓库:https://jitpack.iomaven { url 'https://jitpack.io' }}
}
  • 配置完远程仓库后,在项目 app 模块下的 build.gradle 文件中加入远程依赖
android {// 支持 JDK 1.8compileOptions {targetCompatibility JavaVersion.VERSION_1_8sourceCompatibility JavaVersion.VERSION_1_8}
}dependencies {// Gson 解析容错:https://github.com/getActivity/GsonFactoryimplementation 'com.github.getActivity:GsonFactory:8.0'// Json 解析框架:https://github.com/google/gsonimplementation '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() {@Overridepublic void onTypeException(TypeToken<?> typeToken, String fieldName, JsonToken jsonToken) {// Log.e("GsonFactory", "类型解析异常:" + typeToken + "#" + fieldName + ",后台返回的类型为:" + jsonToken);// 上报到 Bugly 错误列表中CrashReport.postCatchedException(new IllegalArgumentException("类型解析异常:" + typeToken + "#" + fieldName + ",后台返回的类型为:" + jsonToken));}
});

http://www.ppmy.cn/news/1201881.html

相关文章

『MySQL快速上手』-②-数据库基础

文章目录 1.什么是数据库2.MySQL的基本使用2.1 MySQL的安装2.2 连接MySQL服务器2.3 服务器、数据库与表的关系2.4 使用案例 3.SQL语句分类4.存储引擎4.1 什么是存储引擎4.2 查看存储引擎 1.什么是数据库 存储数据用文件就可以了&#xff0c;为什么还要弄个数据库&#xff1f;文…

SwissArmyTransformer瑞士军刀工具箱使用手册

Introduction sat&#xff08;SwissArmyTransformer&#xff09;是一个灵活而强大的库&#xff0c;用于开发您自己的Transformer变体。 sat是以“瑞士军刀”命名的&#xff0c;这意味着所有型号&#xff08;例如BERT、GPT、T5、GLM、CogView、ViT…&#xff09;共享相同的backo…

知行电子口岸EDI端口介绍

电子口岸或者其他物流企业需要确保能够生成和解析符合交通部要求的EDI数据格式。这可能需要进行一些EDI数据映射工作&#xff0c;以确保数据的正确传输和处理。为了支持此需求&#xff0c;我们的开发人员将这些功能模块集成在电子口岸端口中&#xff0c;这个端口的主要功能是将…

2021年电工杯数学建模B题光伏建筑一体化板块指数发展趋势分析及预测求解全过程论文及程序

2021年电工杯数学建模 B题 光伏建筑一体化板块指数发展趋势分析及预测 原题再现&#xff1a; 国家《第十四个五年规划和 2035 年远景目标纲要》中提出&#xff0c;将 2030 年实现“碳达峰”与 2060 年实现“碳中和”作为我国应对全球气候变暖的一个重要远景目标。光伏建筑一体…

北方寒流来袭,供暖已至,你家的暖气热了吗?

如果说诗句“忽如一夜春风来&#xff0c;千树万树梨花开”来形容春天的到来&#xff0c;那么“夜凉如水&#xff0c;寒风乍起添衣裳”就可以形容现在北方的天气了&#xff0c;11月初的早晨&#xff0c;伴随着萧瑟秋风卷动着枯黄落叶的声音&#xff0c;感觉就像是在落魄时买了一…

AD教程 (九)导线及NetLabel的添加

AD教程 &#xff08;九&#xff09;导线及NetLabel的添加 添加导线 绘制导线 点击放置,选择线&#xff0c;或者直接CtrlW快速绘制注意要与绘图工具中的线区别开来&#xff0c;导线是具有电气属性的&#xff0c;绘图工具中的线没有电气属性&#xff0c;只是辅助线绘制导线过程…

SpringBoot基础(六)-- 辅助功能之一 -- 内嵌tomcat

目录 1. 内嵌Tomcat定义位置 2. 内嵌Tomcat运行原理 3. 更换内嵌Tomcat 在前面,我们做的SpringBoot入门案例(SpringBoot基础(一)-- 使用idea(2022版)创建一个Springboot项目(联网开发))勾选了Spirng-web的功能&#

C/S架构的医学影像PACS系统源码,应用于放射、超声、内窥镜、病理等影像科室

C/S架构的PACS系统&#xff0c;采用DICOM3.0国际标准设计&#xff0c;以大型关系型数据库作为数据和图像的存储管理工具&#xff0c;是集医学影像的采集、传输、存储、查询、诊断、报告、综合信息管理等于一体的综合应用系统。 系统主要进行病人信息和影像的获取、处理、存储、…