Что такое простой способ конвертировать динамически объекты 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.

Intereting Posts
Что значит ?. означает в Котлине при использовании в левой части задания? Как назначить байт в котлин? Как проверить класс «instanceof» в kotlin? Как извлечь часть кода в локальные переменные в Kotlin при использовании построителя HTML Ktor? Как заполнить доступную ширину таблицы с столбцами? Плагин с id `kotlin` не найден Почему Котлин не позволяет использовать lateinit с примитивными типами? Невозможно повторно назначить локальные переменные Несогласованность получения данных из базы данных Firebase с тем же классом данных RxKotlin – Single.just () не выделяется при подписке на TestSubscriber Что делает ключевое слово «по» в Котлине? Переустановите 2 POST XML и получите ответ JSON от API. с Котлином Как сортировать на основе / сравнивать несколько значений в Котлин? Когда экземпляр Kotlin (объявленный с помощью модификатора объекта) создается? Как отсортировать список объектов в случае нечувствительного порядка?