我的问题是关于Retrofit和GSON的。我知道GSON用于JAVA对象<->JSON。我知道Retrofit解析我们的响应。我不明白的是为什么我们需要GsonConverterFactory。还有为什么在retrofit中需要addConverterFactory
zkure5ic1#
最新消息:Kotlin中的Pojo对象是数据类,注解的使用与Java中相同答案是:如果您的应用程序是Restful的,则从/向服务器获取和发送数据需要添加转换器工厂,仅用于将JSON数据(从服务器获取)转换为Java(模型)对象(POJO),以便在Android项目中使用。有一些转换器库用于将JSON转换为Java对象(GSON、Jackson等),您必须决定要在项目中使用哪个转换器,并添加相同的工厂应用程序.gradle中的依赖项GsonConverterFactory和工厂进行改造GsonConverterFactory或JacksonConverterFactory
GsonConverterFactory
JacksonConverterFactory
Retrofit.Builder().addConverterFactory(GsonConverterFactory.create());
此外,如果远程数据类型是XML,则需要添加SimpleXmlConverterFactory
SimpleXmlConverterFactory
ttcibm8c2#
如果json转换器不能满足您的需要,您需要添加一个定制的转换器工厂,用于对象的序列化和反序列化。考虑一下case。我希望您会发现article对您有帮助。
shstlldc3#
世界不仅仅是json和gson,还有其他格式可以用来实现Rest API,例如XML。此外,在json解析器的世界里,不仅有gson,而且更像是Jackson和莫希。在Retrofit内部维护所有可能的格式转换器是非常困难的,因此它将解析工作卸载到实现转换器接口的类中。将其置于工厂之后,Retrofit甚至可以解耦这些转换器的创建,因此它可以为不同的响应和请求使用不同的转换器。这还允许您在同一个Retrofit示例中使用多个转换器,并且这也是一种让您实现自己的转换器的简单方法。总而言之,这种解耦比将其与特定库耦合要灵活得多。
gson
csbfibhn4#
如果您使用Spring,则应创建一个Map器配置(或使用默认值,如本例所示),在改型配置中,应使用以下代码:
@Bean fun retrofitBuilder(): Retrofit.Builder { return Retrofit.Builder() .addConverterFactory(JacksonConverterFactory.create(ObjectMapper())) }
然后,在你的应用程序中可以读写Kotlin数据类Json,即使没有@信息。
4条答案
按热度按时间zkure5ic1#
最新消息:
Kotlin中的Pojo对象是数据类,注解的使用与Java中相同
答案是:
如果您的应用程序是Restful的,则从/向服务器获取和发送数据
需要添加转换器工厂,仅用于将JSON数据(从服务器获取)转换为Java(模型)对象(POJO),以便在Android项目中使用。
有一些转换器库用于将JSON转换为Java对象(GSON、Jackson等),您必须决定要在项目中使用哪个转换器,并添加相同的工厂
应用程序.gradle中的依赖项
GsonConverterFactory
和工厂进行改造
GsonConverterFactory
或JacksonConverterFactory
此外,如果远程数据类型是XML,则需要添加
SimpleXmlConverterFactory
ttcibm8c2#
如果json转换器不能满足您的需要,您需要添加一个定制的转换器工厂,用于对象的序列化和反序列化。考虑一下case。我希望您会发现article对您有帮助。
shstlldc3#
世界不仅仅是json和gson,还有其他格式可以用来实现Rest API,例如XML。
此外,在json解析器的世界里,不仅有
gson
,而且更像是Jackson和莫希。在Retrofit内部维护所有可能的格式转换器是非常困难的,因此它将解析工作卸载到实现转换器接口的类中。将其置于工厂之后,Retrofit甚至可以解耦这些转换器的创建,因此它可以为不同的响应和请求使用不同的转换器。
这还允许您在同一个Retrofit示例中使用多个转换器,并且这也是一种让您实现自己的转换器的简单方法。
总而言之,这种解耦比将其与特定库耦合要灵活得多。
csbfibhn4#
如果您使用Spring,则应创建一个Map器配置(或使用默认值,如本例所示),在改型配置中,应使用以下代码:
然后,在你的应用程序中可以读写Kotlin数据类Json,即使没有@信息。