Что такое простой способ конвертировать динамически объекты 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
Как отлаживать последовательности / коллекции Котлина Как получить страну пользователя для HTTP-запроса в бэкэнд? FATAL EXCEPTION: RxCachedThreadScheduler-1 при запуске триггера. Зачем? Функция копирования класса данных Kotlin не работает Как сделать сумму элементов для нескольких списков в kotlin Есть ли встроенный метод Kotlin для применения функции void для оценки? Kotlin неразрешимая ссылка: добавить после преобразования из Java-кода не случайное переопределение в Котлине Не удается получить dokka для генерации котлинских документов по проекту gradle / android Как показать диалог «Прогресс» и «Отклонить» Изменение имени приемника функции расширения kotlin JVM name Обеспечение компиляции статического метода внутри подкласса с Kotlin? Пауза / возобновление таймера / задержки в RX Как установить кодировку источника Kotlin в Gradle? Как исправить ошибку Dagger 2? … не может быть предоставлено '?