【发布时间】:2018-02-26 10:53:02
【问题描述】:
我的示例代码如下:
fun main(args: Array<String>) {
val testData = mapOf<String, Any>(
"name" to "albert",
"age" to 26,
"work" to listOf("1", "2", "3")
)
var value = JSON.stringify(testData, { _, value -> value.toString() }, 2)
println(value)
}
结果是"{name=albert, age=26, work=[1, 2, 3]}"。
似乎它错过了属性名称和字符串值周围的所有双引号。
我使用的是KotlinJS 而不是Kotlin
那么,如何解决呢?
【问题讨论】:
-
我在 kotlin 上玩了一段时间......不是 100% 确定我是对的,但实际上这段代码正在做的是调用 java
Map.toString(),然后将此值赋予 js @987654328 @,所以"{name=albert, age=26, work=[1, 2, 3]}"不是json,但是map.toString() 和JSON.stringify只是在这个字符串周围加上引号。您可以做的是在 java 中使用 jackson 或 gson 转换测试数据,然后忘记 JSON,或者您可以尝试 github.com/Kotlin/kotlinx.serialization 也看看 discuss.kotlinlang.org/t/kotlin-serialization/2063/25 -
@varren 非常感谢您的帮助。这是一个完整的 KotinJS 环境,所以不能从 JVM 世界中受益 :( 我试过
println(JSON.stringify(testData.toString())),仍然没有引号。根据你分享的帖子,似乎内置序列化的东西还没有登陆 KotlinJS 世界。正如你所说,我会调查第 3 方库,谢谢。
标签: javascript json kotlin kotlin-js-interop