Kotlin Обход многомерного объекта
var obj1 = object {
var name = "object"
var type = "object"
var props = object {
var prop1 = "123"
var prop2 = "abc2"
var prop3 = object {
var type = "object3"
var prop4 = "abc4"
}
}
}
Еcть ли способ в Kotlin рекурсивно обойти такой объект?
Ответы (1 шт):
Автор решения: Vadik
→ Ссылка
Подключите в ваш проект библиотеку kotlin-reflect:
dependencies {
implementation("org.jetbrains.kotlin:kotlin-reflect:(версия котлин)")
}
Рекурсивно распечатать все строковые поля для предложенного объекта можно с помощью следующей функции:
fun printProperties(instance: Any) {
for (property in (instance::class as KClass<Any>).memberProperties) {
val name = property.name
val value = property.get(instance)
when (property.returnType) {
String::class.createType() -> println("$name => $value")
else -> printProperties(value)
}
}
}