Я получаю два типа данных в массиве 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? Заранее спасибо.
Для этого конкретного формата 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"]}")
}
}
Я изменил тип на Любой. Теперь не крашится.