首页
学习
活动
专区
圈层
工具
发布

魔改 TypeAdapterFactory

前言 感慨:Retrofit2 虽好,但是,有时候总感觉 Java 这门语言还是美中不足啊!...其实非常有用,TypeAdapterFactory 内部会创建一个 ParamsAdapter,接管了 json 的序列化和反序列化! 来看看我们的 ParamsAdapter 做了什么?...,最后 params 会转换成我们想要的 {"phoneNumber":"159XXXXXXX"} json 格式 ,接下来的事情就交给 Retrofit(像往常一样)。...当然,可能会有人质疑,那 up 你的意思是劳资不用自己费力写 POJO,全用你的 Params 来替代?(如果我回答不是,你会不会一棒子打过来?) 使用场景 这个,我一开始也没提。...遇到这种情况,能创建一个匿名的 params 就创建呗,省下来的时间还能陪陪学妹,何乐而不为! 也有童鞋会说,老板,你把序列化和反序列化全部接管了,如果我没有用你的 Params ,会不会解析异常?

2.3K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Gson 解析 Json 容错策略

    2.1 什么是 TypeAdapter TypeAdapter 是 GSON 2.1 版本开始支持的一个抽象类,用于接管某些类型的序列化和反序列化。...TypeAdapter 最重要的两个方法就是 write() 和 read() ,它们分别接管了序列化和反序列化的具体过程。...如果想单独接管序列化或反序列化的某一个过程,可以使用 JsonSerializer 和 JsonDeserializer 这两个接口,它们组合起来的效果和 TypeAdapter 类似,但是其内部实现是不同的...,最终解析还是使用了标准的 JSONObject 和 JSONArray 类,和 Gson 没有任何关系,Gson 只是起到了一个桥接的作用,好像这个例子也没什么实际用处。...不谈场景说应用都是耍流氓,那么如果是使用 Retrofit 呢?Retrofit 可以配置 Gson 做为数据的转换器,在其内部就完成了反序列化的过程。

    1.5K41

    Gson 解析 Json 容错才是关键,举几个常用的实例!

    GSON 在 JSON 序列化和反序列化之间,利用 @SerializedName 注解来配置多个不同 JSON Key 值,或者再使用 @Expose 来配置一些例外的情况。...2.1 什么是 TypeAdapter TypeAdapter 是 GSON 2.1 版本开始支持的一个抽象类,用于接管某些类型的序列化和反序列化。...TypeAdapter 最重要的两个方法就是 write() 和 read() ,它们分别接管了序列化和反序列化的具体过程。...:"2 } 在这个例子中,最终解析还是使用了标准的 JSONObject 和 JSONArray 类,和 Gson 没有任何关系,Gson 只是起到了一个桥接的作用,好像这个例子也没什么实际用处。...不谈场景说应用都是耍流氓,那么如果是使用 Retrofit 呢?Retrofit 可以配置 Gson 做为数据的转换器,在其内部就完成了反序列化的过程。

    3.6K20

    「2020 新手必备 」极速入门 Retrofit + OkHttp 网络框架到实战,这一篇就够了!

    Retrofit 早已不是什么新技术了,想必看到这篇博客的大家都早已熟知,这里就不啰嗦了,简单介绍下: Retrofit 是一个针对 Java 和 Android 的设计的 REST 客户机。...它通过基于 REST 的 web 服务检索和上传 JSON (或其他结构化数据)变得相对容易。在使用中,您可以配置用于数据序列化的转换器。...:okio:1.8.0' // Retrofit api 'com.squareup.retrofit2:retrofit:2.7.0' // Gson 服务器数据交互 api 'com.google.code.gson...:gson:2.8.6' 依赖注入很简单, Retrofit 一直是结合 OkHttp 和 Gson(无所谓什么 JSON 解析器都行,这里就用 Gson 了) 我这里专门找了最新的版本库,so~...,但 Retrofit 的好处并不只是这些,还有很多跟深入的只是需要了解,但本文限于篇幅,无法向大家一一介绍 对于我前面的 FIWKeepApp 这个仓库,我将一步步转换到 Retrofit + OkHttp

    1.6K30

    Retrofit解析2之使用简介

    ' 如果你序列化 采用GSON,同时回调采用RxJava 处理,还应该添加如下内容 compile 'com.squareup.retrofit2:converter-gson:2.1.0' compile...字段名称和值将先进行UTF-8进行编码,再根据RFC-3986进行URI编码。 2、@Multipart:作用于方法 使用该注解,表示请求体是多部分的,每个部分作为一个参数,且用Part注解声明。...具有相同名称的请求头不会相互覆盖,而是照样添加到请求头中 代码如下: @GET("/") Call foo(@Header("Accept-Language") String...lang); 3、@Headers:作用于方法,用于添加一个或多个请求头中 具有相同名称的请求头不会相互覆盖,而是会照样添加到请求头中。...四、为什么要用Retrofit 1、咱们一起来看下Retrofit的优点: 请求的方法参数注解可以定制 支持同步、异步和RxJava 超级解耦(我最爱) 可以配置不同的反序列化工具来解析数据,如json

    5.4K30

    Retrofit 解析

    Retrofit 优点 可以配置不同HTTP client来实现网络请求,如okhttp、httpclient等 请求的方法参数注解都可以定制 支持同步、异步和RxJava 超级解耦 可以配置不同的反序列化工具来解析数据...缺点 不能接触序列化实体和响应数据 执行的机制太严格 使用转换器比较低效 只能支持简单自定义参数类型 使用的设计模式 Builder模式 Retrofit在生成Retrofit对象和ServiceMethod...工厂模式 Retrofit的Converter和Adapter都是由抽象工厂模式来生成的。...和Adapter都是在Retrofit代理各个方法时候生成的。...总结 Retrofit的设计符合了高内聚,低耦合的原则,有效的将其他框架组织起来,并使其之间解耦,这增强了Retrofit的易用性和灵活性。

    1.4K10

    安卓开发的瑞士军刀“Retrofit2框架”

    不过用MQ又要部署太多的事情,为几个简单去部署一堆事情,俺乐意其时间也不乐意,好吧!那用回http(s),虽然安卓的http传输还是可以,不过刚接触到一套Retrofit2框架。...它就是是一直雄霸在开源框架的TOP 1 的 Retrofit Retrofit的前世今生 Retrofit其实是一款基于OkHttp的框架,它的底层就是OkHttp,OkHttp这个老朋友就不多解释了...Retrofit的优点 ①超级解耦 ②可以配置不同HttpClient来实现网络请求 ③支持同步、异步和RxJava ④可以配置不同的反序列化工具来解析数据,如:json、xml...:retrofit:2.5.0'//Retrofit依赖 implementation 'com.squareup.retrofit2:converter-gson:2.5.0'//可选依赖...,需要填加这个注解,用来将提交的参数编码 //post请求不提交参数,不要加, //如果有提交的参数,没有加@FormUrlEncoded //@Field和@FieldMap一样

    1.2K21

    鸿蒙5开发宝藏案例分享---自由流转的拖拽多屏联动

    参数支持String、int等基本类型,复杂数据需用序列化 案例二:列表数据动态渲染(含下拉刷新) 痛点:官方文档只讲基础ListContainer,但实际开发必加下拉刷新! // 1....详见官方Sample中的TodoList案例 性能优化: 复用Item组件避免内存抖动 分页加载时在onScrollEnd事件追加数据 案例三:网络请求封装(Retrofit风格) 为什么要封装:官方...HttpTask写回调太反人类!...@Override public void onSuccess(String data) { // 更新UI } }); 高阶技巧: 搭配Gson...解析JSON数据 使用EventHandler解决子线程更新UI问题 ️ 案例四:数据持久化(轻量级存储) 替代SharedPreferences:鸿蒙的Preferences更香!

    16010

    JSON转Java POJO就是这么简单快捷

    大家都明白第三方接口的参数和返回值都是提供方定义好的,我们封装时需要生成自己的POJO类。这种工作没有技术含量不说,还耗时耗力。..."wait_days_after_receive":7, "available_week": { "week_day": [ 1, 2...严重降低了写代码的乐趣,胖哥在手写了几个后都有放弃的冲动了。 2. JSON 转 POJO 工具 我需要搞一个 JSON 转 POJO 工具来干这个活。...同时它还支持 GSON, FastJSON, AutoValue (GSON), Logan Square, Jackson 这些 JSON 框架,方便你序列化和反序列化。 ? 演示 ?...真正能提高水平的是对逻辑过程、逻辑对象的归纳和抽象,如何让逻辑层次化,清晰而有序。好了今天的分享就到这里,我是:码农小胖哥,多多关注,分享更多编程干货。

    1.7K30

    穿越到东汉末年的Jackson

    年 东汉Java年,Java的系列化工具成三足鼎立之势,分别是曹魏Jackson,蜀汉Gson,和东吴FastJson 曹魏Jackson Jackson被称为“ Java JSON库”或“ Java的最佳...Gson: 吾观取汉上之地,易如反掌。我主刘豫州躬行仁义,不忍夺同宗之基业,故力辞之。刘琮孺子,听信佞言,暗自投降,致使曹操得以猖獗。...例如,ExtendableBean实体具有name属性和一组键/值对形式的可扩展属性: image.png 当我们序列化这个实体的一个实例时,我们将Map中的所有键值作为标准的、普通的属性: image.png...让我们为MyBean实体的属性设置自定义顺序: 这是序列化的输出: image.png @JsonRootName 该 @JsonRootName注释时,如果包裹被启用,以指定的包装中使用的根目录的名称...@JsonAlias 所述 @JsonAlias定义反序列化过程为属性的一个或多个的替代名称。

    2.4K20

    Android 代码混淆

    大家好,又见面了,我是你们的朋友全栈君。 Android 代码混淆 简介 在我们日常开发中,对已经开发完成的源代码,需做一些代码混淆工作,以对代码起到一种保护和降低安装包体积的作用。...-keepclassmembersname 防止成员被重命名 -keepclasseswithmembers 防止拥有该成员的类和成员被移除或者被重命名 -keepclasseswithmembernames...防止拥有该成员的类和成员被重命名 类通配符 * 匹配任意长度字符,但不含包名分隔符(.)...android.os.Parcelable { public static final android.os.Parcelable$Creator *; } # 保留Serializable序列化的类不被混淆...# Retrofit -dontwarn retrofit2.** -keep class retrofit2.** { *; } -keepattributes Signature -keepattributes

    1.6K30

    你真的会用Retrofit2吗?Retrofit2完全教程

    注1:{占位符}和PATH尽量只用在URL的path部分,url中的参数使用Query和QueryMap 代替,保证接口定义的简洁 注2:Query、Field和Part这三者都支持数组和实现了Iterable...时需要明确告知用于将ResponseBody转换我们泛型中的类型时需要使用的Converter 引入Gson支持: compile 'com.squareup.retrofit2:converter-gson...:2.0.2' 通过GsonConverterFactory为Retrofit添加Gson支持: Gson gson = new GsonBuilder() //配置你的Gson...测试1', content='这里是 Retrofit2 Demo 测试服务器1'},.....], count=20, page=1} 「20160608补充」:像上面的这种情况最后我们无法获取到返回的...Header和响应码的,如果我们需要这两者,提供两种方案: 1、用Observable``Observable ,这里的Response指retrofit2.Response 2、用

    2.7K70

    一起来写OKHttp的拦截器

    现如今,做 Android 开发在选择网络框架时,大多数都会首推 Retrofit 。Retrofit 以其简洁优雅的代码俘获了大多数开发者的心。...然而 Retrofit 内部请求也是基于 OKHttp 的,所以在做一些自定义修改 HTTP 请求时,需要对 OKHttp 拦截器具有一定了解。...经过了这两种拦截器,相信同学们已经充分体会到了 OKHttp 的优点和与众不同。 最后,自定义拦截器的使用情景通常是对所有网络请求作统一处理。...还是后台需求,login 接口返回的数据也是经过 AES 加密的。所以需要我们针对所有响应体都做解密处理。 另外,还有很重要的一点,就是数据正常和异常时返回的 JSON 格式不一致。...我们先创建包名 retrofit2.converter.gson ,为什么要创建这个包名呢?

    96220

    Google Gson用法详解

    示例中,演示在序列化和反序列化过程中更改json和java对象之间的字段名称。...9.1、@SerializedName 默认情况下,我们假设Java模型类和JSON将具有完全相同的字段名称。 但有时情况并非如此,某些名称有所不同。...请记住,它无法阻止单向转换。它同时阻止了两者。 transient 具有与@Expose相同的效果(serialize = false,deserialize = false)。...JsonElement f3 = f2Obj.get("f3"); } } 七、自定义序列化和反序列化 Gson在默认序列化和反序列化方面提供了非常出色的功能。...不过,我们可能会遇到默认和内置自定义选项无法解决我们问题的情况。在这种情况下,我们可以通过两个接口JsonSerializer和JsonDeserializer使用自定义序列化和反序列化。

    23K31
    领券