Kotlin JS JSON反序列化

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (267)

我在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 debuger中,我可以看到,该对象“a”被反序列化。但我认为,它不是一个有效的类型A的kotlin对象。如何从对象“a”或从原始json字符串创建类型A的有效kotlin对象实例?

提问于
用户回答回答于

你不应该使用JSON.parse定期的Kotlin类。改用外部接口,即:

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)
}
用户回答回答于

可以通过编写以下内容来使其工作:

for (c in listOf(a.c)) println(c)

扫码关注云+社区

领取腾讯云代金券