gpt4 book ai didi

javascript - 将 Kotlin/Js 对象动态转换为纯 javascript 对象的简单方法是什么?

转载 作者:行者123 更新时间:2023-12-01 08:11:20 26 4
gpt4 key购买 nike

例如,我们有这样的结构:

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
}

我知道 也可以做到这一点序列化/反序列化 ,但我认为它会更慢并且有一些开销。

有谁知道隐藏 Kotlin 的简单方法 object到纯 Javascript object ( dynamic Kotlin 类型)?

最佳答案

我可能无法真正理解您的问题,所以如果这没有帮助,请见谅。
就个人而言,我是使用 Klaxon 的粉丝:
https://github.com/cbeust/klaxon

您可以编写自己的反射实用程序来迭代数据类中的所有属性并将它们转换为 JSON。

关于javascript - 将 Kotlin/Js 对象动态转换为纯 javascript 对象的简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47921255/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com