Как разобрать массив json, который содержит несколько типов данных?

Я получаю два типа данных в массиве json из ответа API: объект String и json.

 JSON::
{
"elements": [
    "task.",
    "weeks.",
    {
        "image_url": "https://www.graph-2x.jpg"
    }
]
}

data class::
  @SerializedName("elements" ) var bodyElements : ArrayList<String> = arrayListOf()

Он выдает ошибку, поскольку я упомянул, что тип данных - String. Может ли кто-нибудь предложить, как я могу проанализировать массив json с несколькими типами в Kotlin? Заранее спасибо.

Структурированный массив Numpy
Структурированный массив Numpy
Однако в реальных проектах я чаще всего имею дело со списками, состоящими из нескольких типов данных. Как мы можем использовать массивы numpy, чтобы...
T - 1Bits: Генерация последовательного массива
T - 1Bits: Генерация последовательного массива
По мере того, как мы пишем все больше кода, мы привыкаем к определенным способам действий. То тут, то там мы находим код, который заставляет нас...
Что такое деструктуризация массива в JavaScript?
Что такое деструктуризация массива в JavaScript?
Деструктуризация позволяет распаковывать значения из массивов и добавлять их в отдельные переменные.
1
0
42
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Для этого конкретного формата JSON вы можете использовать следующее:

Используйте Любой в качестве типа данных:

data class ElementsResponse(@SerializedName("elements") val elements: ArrayList<Any>)

И чтобы использовать ответ, проверьте, является ли ЛюбойString или LinkedTreeMap

when(element) {
    is String -> {
        // task. or weeks.
        println("string: $element")
    }
    is LinkedTreeMap<*, *> -> {
        // key: image_url / value: https://www.graph-2x.jpg
        println("image_url: ${element["image_url"]}")
    }
}

Я изменил тип на Любой. Теперь не крашится.

Bhoomika Brahmbhatt 17.03.2022 00:01

Другие вопросы по теме