gpt4 book ai didi

javascript - Kotlin JS JSON 反序列化

转载 作者:IT老高 更新时间:2023-10-28 13:42:06 26 4
gpt4 key购买 nike

我在 javascript 平台上使用 kotlin。此代码在第六行失败,出现异常“Uncaught TypeError: a.c.iterator is not a function”。

class A(val b: String, val c: List<String>)

fun main(args: Array<String>) {
val a = JSON.parse<A>("""{"b": "b_value", "c": ["c_value_1", "c_value_2"]}""")
println(a.b)
for (c in a.c) println(c)
}

在 javascript 调试器中,我可以看到,该对象“a”已反序列化。但我认为,它不是 A 类型的有效 kotlin 对象。无论如何,如何从对象“a”或原始 json 字符串创建 A 类型的有效 kotlin 对象实例?

最佳答案

你不应该使用 JSON.parse与常规的 Kotlin 类(class)。将其与外部接口(interface)一起使用,即:

external interface A(val b: String, val c: Array<String>)

fun main(args: Array<String>) {
val a = JSON.parse<A>("""{"b": "b_value", "c": ["c_value_1", "c_value_2"]}""")
println(a.b)
for (c in a.c) println(c)
}

抱歉,这种限制无法通过 Kotlin 类型系统表达。

是的,正如@marstran 提到的,你不应该使用 List<T>在这种情况下,还有其他 Kotlin 集合。我们正在开发一个库,用于将 JSON 反序列化为 Kotlin JS 类(类似于 JVM 中的 Jackson),但我还不能透露时间范围。

UPD:有kotlinx.serialization将 Kotlin 类与 JSON 进行映射的库。

关于javascript - Kotlin JS JSON 反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44715920/

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