use*_*629 7 javascript json kotlin
我在javascript平台上使用kotlin.此代码在第六行失败,但"Uncaught TypeError:aciterator不是函数"除外.
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)
}
Run Code Online (Sandbox Code Playgroud)
在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)
}
Run Code Online (Sandbox Code Playgroud)
对不起,这种限制无法通过Kotlin类型系统表达.
是的,正如@marstran所提到的,List<T>在这种情况下你不应该使用和其他Kotlin集合.我们正在开发一个库,用于将JSON反序列化为Kotlin JS类(类似于JVM中的Jackson),但我还不能说时间框架.
UPD:有kotlinx.serialization库,它将Kotlin类映射到JSON和从JSON映射.
| 归档时间: |
|
| 查看次数: |
2413 次 |
| 最近记录: |