Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Kotlin JSON反序列化_Javascript_Json_Kotlin - Fatal编程技术网

Javascript Kotlin JSON反序列化

Javascript Kotlin JSON反序列化,javascript,json,kotlin,Javascript,Json,Kotlin,我在javascript平台上使用kotlin。此代码在第六行失败,出现异常“UncaughtTypeError:a.c.iterator不是函数” A类(val b:字符串,val c:列表) 趣味主线(args:Array){ val a=JSON.parse(“{”b:“b_值”,“c:[“c_值_1”,“c_值_2”]}”) println(a.b) 对于(c在a.c)println(c) } 在javascript调试程序中,我可以看到,对象“a”是反序列化的。但我认为,它不是一个有

我在javascript平台上使用kotlin。此代码在第六行失败,出现异常“UncaughtTypeError:a.c.iterator不是函数”

A类(val b:字符串,val c:列表)
趣味主线(args:Array){
val a=JSON.parse(“{”b:“b_值”,“c:[“c_值_1”,“c_值_2”]}”)
println(a.b)
对于(c在a.c)println(c)
}

在javascript调试程序中,我可以看到,对象“a”是反序列化的。但我认为,它不是一个有效的a类型kotlin对象。有没有办法,如何从对象“a”或原始json字符串创建有效的a类型kotlin对象实例

您不应该对常规Kotlin类使用
JSON.parse
。将其与外部接口一起使用,例如:

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)
}
外部接口A(值b:字符串,值c:数组)
趣味主线(args:Array){
val a=JSON.parse库,用于将Kotlin类映射到JSON和从JSON映射到Kotlin类。

现在对于这种情况(将JSON映射到Kotlin类),您可以使用


查看第节,了解将json解析为真实Kotlin数据类而不是外部接口的示例

我在应用程序的服务器(jvm)部分使用相同的类。因此我不能使用外部接口。我使用了类A(val b:String,val c:Array),这也起作用。数组而不是列表很重要。抱歉,但目前这是Kotlin JS的一个限制。您必须使用外部接口将服务器端DTO复制到类。这篇文章救了我。尽管如此,我希望Kotlin类很快会得到支持…@guenhter它们现在得到了支持。请参阅对我最初答案的更新。@Alexey安德烈。酷。有什么要考虑的,因为昨天我试图反序列化一个JSON(<代码> {”:(1, 2, 3)} /CODE >,但它没有解决得太好。反序列化本身起作用,但是当循环在列表上时,出现了一个错误;一些关于迭代器的事情…
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)
}