gpt4 book ai didi

javascript - 如何将 JavaScript 对象指向 Kotlin 类?

转载 作者:行者123 更新时间:2023-11-30 14:23:28 24 4
gpt4 key购买 nike

我想将一个 JavaScript 对象加载到 Kotlin 类中。作为安全检查,我需要验证 Kotlin 对象实际上是我创建的类,因为某些 JavaScript 代码部分不是我设计的。我需要 JavaScript 正确返回,但我无法验证 Kotlin 类。

例如

JavaScript 对象

<script id="myJS">
function MyClass(id, name){
var obj = {};
obj.id = id;
obj.name = name;

return obj;
}
var myClass = MyClass(0, "name_0");
</script>

Kotlin 类

class MyClass(
val id: Int,
val name: String
)

我使用此 Kotlin 代码在 Kotlin 上获取 JavaScript 对象。

val myJS: dynamic = document.getElementById("myJS")
val myClass: MyClass = JSON.parse<MyClass>(JSON.stringify(myJS.myClass))//get JavaScript object
println(myClass.id)//success output "0"
println(myClass.name)//success output "name_0"

println(myClass is MyClass)//but check class this output "false"

如何验证 JavaScript 对象是否是创建的 Kotlin 类?

最佳答案

使用来自 kotlinx.serializationJSON.parse库而不是来自 Kotlin/JS 标准库的 JSON.parse

JSON来自 Kotlin 标准库的只是一个围绕 JavaScript 的 View JSON object .所以 JSON.parse 创建了没有任何关于 Kotlin 类型的信息的常规 JS 对象。

可以和external一起使用无法进行类型检查的类。但是你的 MyClass 是一个常规类。

从常规 Kotlin 类构造的对象具有特殊的元数据,这对于类型检查 myClass is MyClass 和反射 myClass::class == MyClass::class 至关重要。和 kotlinx.serialization库创建这些功能齐全的 Kotlin 对象。

关于javascript - 如何将 JavaScript 对象指向 Kotlin 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52341363/

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