Получить указанное c поле в JSON - PullRequest
1 голос
/ 23 января 2020

У меня есть класс данных, который представляет объект, который я получаю от моего API:

data class MyObject(
    @SerializedName("id") var id: Int,
    @SerializedName("status.description") var status: String
)

Вот как выглядит мой JSON:

{
    "id": 1,
    "status": {
        "description": "OK"
    }
}

I ' Я получаю эти данные с помощью Retrofit, используя адаптер Gson, но у меня всегда есть атрибут состояния null . Даже если я использую Moshi, это все равно null .

Как я могу получить этот атрибут из моего JSON без необходимости создания класса Status только с одним уникальным атрибутом с именем description?

Ответы [ 2 ]

1 голос
/ 23 января 2020

Попробуйте:

data class MyObject(
    @SerializedName("id") var id: Int,
    @SerializedName("status") var status: Status
)

data class Status(
    @SerializedName("description") var description: String,
)

, если вы не хотите использовать вышеуказанный метод:

{ ссылка }

0 голосов
/ 23 января 2020
data class MyObject(
    val id: Int,
    val status: Status
)

data class Status(
    val description: String
)

Вы можете использовать val для окончательного заполнения этих полей. Также нужно помнить одну хитрость: если вы используете последние поля, kotlin может сделать для вас смарткаст.

Пример:

data class Status(
    val description: String?
)

val status: Status = Status("success")
if ( status.description != null){
  // status.description will be smartcasted to String, not String?
}
...