首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当使用Retrofit和Map<String,Any>时,Moshi自定义Map<String无法识别类型

当使用Retrofit和Map<String,Any>时,Moshi自定义Map<String无法识别类型
EN

Stack Overflow用户
提问于 2022-04-21 00:10:47
回答 1查看 91关注 0票数 0

改造接口

代码语言:javascript
复制
interface ApiService {
@GET("/api")
    suspend fun get(
        @QueryMap params: Map<String, Any>
    ): Response<ResponseBody>
}

Moshi自定义适配器

代码语言:javascript
复制
class InstantJsonAdapter : JsonAdapter<Instant>() {
   override fun toJson(writer: JsonWriter, value: Instant?) {
    // ...
   }
}

当我调用apiService.get(params)时,Moshi适配器无法识别Instant类型的任何参数请求,因此它从不调用toJson()方法。

EN

回答 1

Stack Overflow用户

发布于 2022-04-22 10:22:04

正如QueryMap的文档所述,QueryMap通过委托给Converter.Factory.stringConverterretrofit.stringConverter()进行转换。

MoshiConverterFactory只实现responseConverterrequestConverter,而不实现stringConverter。所以如果你使用它,这就是原因。

您可以实现自己的转换器工厂,并通过Retrofit.Builder.addConverterFactory()添加它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71947497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档