Что такое простой способ конвертировать динамически объекты Kotlin / Js в простой объект javascript?

Например, у нас есть эта структура:

data class Item( val city: String, val name: String ) val structure = mapOf("items" to listOf( Item("NY", "Bill"), Item("Test", "Test2")) ) 

И я хочу получить этот объект в Javascript:

 var structure = { "items": [ { "city": "NY", "name": "Bill" }, { "city": "Test", "name": "Test2" } ] } 

Как мы могли бы преобразовать map из Kotlin в dynamic тип с такой структурой в Javascript?

Я нахожу только этот явный способ:

 fun Map<String, Any>.toJs(): dynamic { val result: dynamic = object {} for ((key, value) in this) { when (value) { is String -> result[key] = value is List<*> -> result[key] = (value as List<Any>).toJs() else -> throw RuntimeException("value has invalid type") } } return result } fun List<Any>.toJs(): dynamic { val result: dynamic = js("[]") for (value in this) { when (value) { is String -> result.push(value) is Item -> result.push(value.toJs()) else -> throw RuntimeException("value has invalid type") } } return result } fun Item.toJs(): dynamic { val result: dynamic = object {} result["city"] = this.city result["name"] = this.name return result } 

Я знаю, что это можно сделать и с сериализацией / десериализацией , но я думаю, что это будет медленнее и с некоторыми накладными расходами.

Кто-нибудь знает простой способ скрытого object Котлин на простой object Javascript ( dynamic тип Котлина)?

Возможно, я действительно не понимаю ваш вопрос, поэтому, пожалуйста, извините меня, если это не поможет. Лично я поклонник использования Klaxon: https://github.com/cbeust/klaxon

Вы можете написать свою собственную утилиту отражения, чтобы перебрать все свойства в классе данных и преобразовать их в JSON.