Я пытаюсь создать карту в класс kotlin следующим образом:
class RegisterThingPostBody(inputBody: Map<String, Any>) {
val device: Device by inputBody
val thing: Thing by inputBody
class Device(inputBody: Map<String, Any>) {
val serialnumber: String by inputBody
val securityCode : String by inputBody
}
class Thing(inputBody: Map<String, Any>) {
val name: String by inputBody
val location: Location by inputBody
class Location(inputBody: Map<String, Any>) {
val street: String by inputBody
val city: String by inputBody
val state: String by inputBody
val lat: Double by inputBody
val lon: Double by inputBody
}
}
}
Но я получаю ClassCastException
для объектов (Thing, Device Location), что понятно.Я могу решить это, выполнив то, что я делаю ниже, но он не такой аккуратный, как верхний.И я должен повторить имя переменной дважды.
class RegisterThingPostBody(inputBody: Map<String, Any>) {
val device = Device(inputBody["device"] as Map<String, Any>)
val thing = Thing(inputBody["thing"] as Map<String, Any>)
class Device(inputBody: Map<String, Any>) {
val serialnumber: String by inputBody
val securityCode : String by inputBody
}
class Thing(inputBody: Map<String, Any>) {
val name: String by inputBody
val location = Location(inputBody["location"] as Map<String, Any>)
class Location(inputBody: Map<String, Any>) {
val street: String by inputBody
val city: String by inputBody
val state: String by inputBody
val lat: Double by inputBody
val lon: Double by inputBody
}
}
}
Есть ли хороший способ решить эту проблему?