У меня есть такие перечисления:
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
при сериализации , но отлично работает при десериализации .
Что не так?