gson 改造中为什么需要addConverterFactory

hfyxw5xn  于 2022-11-06  发布在  其他
关注(0)|答案(4)|浏览(584)

我的问题是关于Retrofit和GSON的。我知道GSON用于JAVA对象<->JSON。我知道Retrofit解析我们的响应。我不明白的是为什么我们需要GsonConverterFactory。还有为什么在retrofit中需要addConverterFactory

zkure5ic

zkure5ic1#

最新消息:
Kotlin中的Pojo对象是数据类,注解的使用与Java中相同
答案是:
如果您的应用程序是Restful的,则从/向服务器获取和发送数据
需要添加转换器工厂,仅用于将JSON数据(从服务器获取)转换为Java(模型)对象(POJO),以便在Android项目中使用。
有一些转换器库用于将JSON转换为Java对象(GSON、Jackson等),您必须决定要在项目中使用哪个转换器,并添加相同的工厂
应用程序.gradle中的依赖项
GsonConverterFactory
和工厂进行改造
GsonConverterFactoryJacksonConverterFactory

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

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

ttcibm8c

ttcibm8c2#

如果json转换器不能满足您的需要,您需要添加一个定制的转换器工厂,用于对象的序列化和反序列化。考虑一下case。我希望您会发现article对您有帮助。

shstlldc

shstlldc3#

世界不仅仅是json和gson,还有其他格式可以用来实现Rest API,例如XML。
此外,在json解析器的世界里,不仅有gson,而且更像是Jackson和莫希。
在Retrofit内部维护所有可能的格式转换器是非常困难的,因此它将解析工作卸载到实现转换器接口的类中。将其置于工厂之后,Retrofit甚至可以解耦这些转换器的创建,因此它可以为不同的响应和请求使用不同的转换器。
这还允许您在同一个Retrofit示例中使用多个转换器,并且这也是一种让您实现自己的转换器的简单方法。
总而言之,这种解耦比将其与特定库耦合要灵活得多。

csbfibhn

csbfibhn4#

如果您使用Spring,则应创建一个Map器配置(或使用默认值,如本例所示),在改型配置中,应使用以下代码:

@Bean
fun retrofitBuilder(): Retrofit.Builder {
    return Retrofit.Builder()
        .addConverterFactory(JacksonConverterFactory.create(ObjectMapper()))
}

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

相关问题