Моши десериализует значения как ноль - PullRequest
0 голосов
/ 30 октября 2018

Я недавно переключился с Гсона на Моши, и у меня возникли проблемы с парсингом некоторых Json.

{
  "access_token": "-LNe2LQ7DQH5Y2zs_W5iUumKuaUE",
  "token_type": "bearer",
  "device_id": "461f-837e-af5050c92fe9",
  "expires_in": 3600,
  "scope": "*"
}

А вот класс моделей:

data class AuthToken(
        @Json(name = "access_token") val accessToken: String,
        @Json(name = "token_type") val tokenType: String,
        @Json(name = "device_id") val deviceId: String,
        @Json(name = "expires_in") val expiresIn: Int,
        @Json(name = "scope") val scope: String
)

Всякий раз, когда я переключаюсь на использование Moshi в моем модифицированном клиенте, я получаю следующую ошибку:

java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull

Я сделал поле обнуляемым, однако оно всегда десериализовано как нулевое. Я проверил свой ответ на модернизацию, и он (очевидно) одинаков при использовании Gson или Moshi. Что я делаю неправильно?

1 Ответ

0 голосов
/ 01 ноября 2018

Почему-то, когда я явно говорю классу AuthToken создать адаптер - я не получаю нулевые значения.

@JsonClass(generateAdapter = true)
data class AuthToken(
        @Json(name = "access_token") val accessToken: String,
        @Json(name = "token_type") val tokenType: String,
        @Json(name = "device_id") val deviceId: String,
        @Json(name = "expires_in") val expiresIn: Int,
        @Json(name = "scope") val scope: String
)
...