【发布时间】:2019-05-03 19:43:12
【问题描述】:
我有这样的枚举:
enum class NewTaskState(val value: Int) {
@SerializedName("0")
STATE_INSTALLED(0),
@SerializedName("1")
STATE_LAUNCHED(1)
}
经过改造的 API 调用:
@POST("tasks/android/{id}/state/update/")
@FormUrlEncoded
fun updateAppTaskState(
@Path("id") id: Long,
@Query("device_pk") deviceId: Long,
@Field("new_state") newState: NewTaskState
): Single<Response<Any>>
和GSON配置:
return GsonBuilder()
.registerTypeAdapter(Date::class.java, DateDeserializer())
.enableComplexMapKeySerialization()
.create()
Gson 版本为2.8.5。
当我使用这个调用时,我在日志中看到:
I/OkHttp: --> POST <removed>/tasks/android/1/state/update/?device_pk=8
I/OkHttp: Content-Type: application/x-www-form-urlencoded
I/OkHttp: Content-Length: 25
I/OkHttp: Authorization: Token <removed>
I/OkHttp: new_state=STATE_INSTALLED
因此它在 序列化 上忽略 @SerializedName 值,但在 反序列化 上工作正常。
怎么了?
【问题讨论】:
标签: android kotlin gson retrofit2