kotlin-js - 如何使用 Kotlin JS 中的 JSONObject
问题描述
我是 Kotlin JS 的新手。
我正在尝试将我的 android 应用程序的业务逻辑移植到 Kotlin JS。
我的应用程序使用 org.json.JsonObject 类进行自定义序列化。我不能将 KotlinX 序列化与注释一起使用,因为我的类是内联的并且不支持这些注释。
Kotlin-JS 项目使用 Gradle Kotlin DSL。我将依赖项指定为“实现(“org.json:json:20190722”)”。对于库中的任何内容,编译器都会抛出错误“未解析的引用”。我怀疑以这种方式链接到 Kotlin-JS 的 java 库是不合法的。这是真的?
在我的应用程序中实现 JsonObject 的最佳方法是什么?我需要将源代码复制到我的项目中并自己编译成JS吗?
谢谢你的帮助。
解决方案
如果您不想使用kotlinx.serizalization
库中的注解,您仍然可以将其包含在您的 android 和 js 平台中。
您只需要JsonObject
手动构建和使用两个平台上都存在的类型。
您可以在此处查看库中的 JsonObject 定义:
这是使用 kotlinx.serialization 类手动构造 JsonObject 的示例
data class AnalyticsEvent(
val name: Event,
val columns: Map<Column, JsonPrimitive>? = null,
val properties: Map<Property, JsonElement>? = null
) : LoggingEvent() {
override fun toJson(): JsonObject {
val content: MutableMap<String, JsonElement> = mutableMapOf()
content[EVENT_NAME_KEY] = JsonPrimitive(name.actual)
val columnJSON = columns?.mapKeys { it.key.actual }
columnJSON?.let {
content[EVENT_COLUMNS_KEY] = JsonObject(columnJSON)
}
val propertiesJSON = properties?.mapKeys { it.key.actual }
propertiesJSON?.let {
content[EVENT_PROPERTIES_KEY] = JsonObject(propertiesJSON)
}
return JsonObject(content)
}
推荐阅读
- java - Java Kafka Consumer在内存中存储状态?
- r - 如何在不使用 for 循环的情况下将向量更改为相应的名称
- ios - 如何使用 Xcode 在 iOS 上调试 Kotlin
- python - 使用 csv.to_csv 写入 csv 文件时的特殊字符
- javascript - 我的 CSS 和 JS 外部文件在我的项目中不起作用
- javascript - 在浏览器开发人员检查工具获得焦点之前无法访问 Timymce
- excel - Excel,合并相似的数据,但有一些缺失/添加的行
- javascript - Django request.POST.get 不适用于 Vanilla JavaScript 请求
- python - Pybind11 keep-alive 不会让对象保持活动状态
- flutter - 插件 admob_flutter 使用了已弃用的 Android 嵌入版本