为了账号安全,请及时绑定邮箱和手机立即绑定

为什么在改造中需要 addConverterFactory

为什么在改造中需要 addConverterFactory

潇潇雨雨 2022-07-27 09:24:15
我的问题是关于改造和 GSON。我知道 GSON 用于 JAVA 对象 <-> JSON 。我知道 Retrofit 会解析我们的响应。我不明白为什么我们需要 GsonConverterFactory 。还有为什么在改造中需要 addConverterFactory
查看完整描述

4 回答

?
繁花如伊

TA贡献2012条经验 获得超12个赞

更新:

Kotlin 中的 Pojo 对象是数据类,注解的使用与 Java 中一样

回答:

如果您的应用程序是 Restful,那么从 / 向服务器获取和发送数据

需要添加转换器工厂,只是为了改造可以将JSON数据(从服务器获取)转换为Java(模型)对象(POJO),以在Android项目中使用。

有一些转换器库用于将 JSON 转换为 Java 对象,(GSON、Jackson..等)您必须决定要在项目中使用哪个转换器并添加相同的工厂

app.gradle 中的依赖项

implementation "com.squareup.retrofit2:converter-gson:VERSION"

和改造设置中的工厂

GsonConverterFactory或者JacksonConverterFactory

Retrofit.Builder().addConverterFactory(GsonConverterFactory.create());

此外,如果远程数据类型是 XML,则需要添加SimpleXmlConverterFactory


查看完整回答
反对 回复 2022-07-27
?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

如果 json 转换器不能满足您的需求,您需要添加自定义转换器工厂以对对象进行序列化和反序列化。考虑这种情况。我希望你会发现这篇文章很有帮助。



查看完整回答
反对 回复 2022-07-27
?
三国纷争

TA贡献1804条经验 获得超7个赞

世界不仅仅是json和gson。您可以使用其他格式来实现 Rest API,即 XML。

此外,在 json 解析器的世界中,不仅有gsonJackson 和 Moshi,而且更像是这样。

在 Retrofit 中维护所有可能的格式转换器是极其困难的,因此它将解析卸载到实现转换器接口的类。将其置于工厂之后,Retrofit 甚至可以将这些转换器的创建解耦,因此它可以针对不同的响应和请求使用不同的转换器。

这也允许您在同一个 Retrofit 实例中拥有多个转换器,这也是一种让您实现自己的转换器的简单方法。

总而言之,这种解耦比将其与特定库耦合具有更大的灵活性。


查看完整回答
反对 回复 2022-07-27
?
冉冉说

TA贡献1877条经验 获得超1个赞

如果您使用的是 Spring,您应该创建一个映射器配置(或使用默认值,如本例所示),在改造配置中,您应该使用以下代码:


@Bean

fun retrofitBuilder(): Retrofit.Builder {

    return Retrofit.Builder()

        .addConverterFactory(JacksonConverterFactory.create(ObjectMapper()))

}

然后,在您的应用程序中可以读写 Kotlin 数据类 Json,即使没有 @ 信息。


查看完整回答
反对 回复 2022-07-27
  • 4 回答
  • 0 关注
  • 139 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信