【发布时间】:2021-06-12 23:36:14
【问题描述】:
我有一个这样的改造实例
val moshi = Moshi.Builder()
.add(SkipBadElementsListAdapter.Factory)
.add(KotlinJsonAdapterFactory())
.add(Date::class.java, MoshiDateAdapter())
.build()
val okHttpClient = createHttpClientBuilder()
.build()
return Retrofit.Builder()
.client(okHttpClient)
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(MoshiConverterFactory.create(moshi))
.baseUrl(Interactors.apiEndpoint)
.build()
.create(UserApiClient::class.java)
我正在发送此对象的列表
internal open class QuizAnswerDto(
@Json(name = "questionOrder") val questionOrder: Int?,
@Json(name = "questionKind") val type: String?,
@Json(name = "questionId") val questionId: String?,
@Json(name = "response") val response: Any?,
@Json(name = "order") val answerOrder: Int?,
@Json(name = "text") val answerText: String?,
@Json(name = "responses") val answersMap: Map<Int, String>?){
companion object {
const val ANGRY_ID = 0
const val UPSET_ID = 1
const val NEUTRAL_ID = 2
const val SATISFIED_ID = 3
const val HAPPY_ID = 4
const val UNKNOWN = -1
const val LIKE_DISLIKE= "yes_no"
const val SENTIMENT ="viewer_sentiment"
const val SINGLE_ANSWER="multiple_choice"
const val MULTIPLE_ANSWERS="select_all_that_apply"
const val SHORT_ANSWER="short_answer"
}
}
通过此 API 调用
@POST("campaigns/influencer/sponsorships/watchandrespond/{influencerSponsorshipId}/answers")
@JvmSuppressWildcards
fun submitAnswers(@Path("influencerSponsorshipId") influencerSponsorshipId: String,
@Body request: List<QuizAnswerDto>): Completable
当我这样做时,我得到了这个错误:
java.lang.IllegalArgumentException:无法创建@Body 转换器 对于 java.util.List
(参数#2) 原因:java.lang.IllegalArgumentException: No JsonAdapter for E (with no annotations)
参数 #2 (questionKind) 始终是伴随对象中的 const 字符串之一,我不知道它在说什么“类型变量或通配符”。我做错了什么?
【问题讨论】:
-
我添加了这个,现在我得到了一个不同的错误。已编辑
标签: android retrofit retrofit2 moshi