、我々は、この構造を持っている:動的な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でこのオブジェクトを取得したい:
我々はJavascriptで、このような構造でdynamic
型にKotlinから
map
を変換することができる方法
var structure = {
"items": [
{
"city": "NY",
"name": "Bill"
},
{
"city": "Test",
"name": "Test2"
}
]
}
?
は、私がこれだけ明示的な方法を見つける:
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
をプレーンJavascriptに変換するobject
(dynamic
Kotlinタイプ)?
おそらく.asDynamic()? – deviant
'.asDynamic'はこの値を' dynamic type'の値として再解釈します – kurt