首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Kotlin JS中使用JSONObject

如何在Kotlin JS中使用JSONObject
EN

Stack Overflow用户
提问于 2020-07-10 08:20:56
回答 1查看 383关注 0票数 0

我是Kotlin JS的新手。

我正在尝试将我的android应用程序的业务逻辑移植到Kotlin JS。

我的应用程序使用类org.json.JsonObject进行自定义序列化。我不能将KotlinX序列化与注释一起使用,因为我的类是内联的,而这些注释不受支持。

Kotlin-JS项目使用Gradle Kotlin DSL。我将依赖项指定为"implementation ("org.json:json:20190722")“。对于库中的任何内容,编译器都会抛出错误"unresolved reference“。我怀疑以这种方式链接到一个java库对于Kotlin-JS是不合法的。这是真的吗?

在我的应用程序中实现JsonObject的最佳方式是什么?我是否需要将源代码复制到我的项目中,然后自己编译成JS?

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2020-07-10 20:58:03

如果你不想使用kotlinx.serizalization库中的注释,你仍然可以将它包含在android和js平台中。

您只需要手动构造和使用两个平台上都存在的JsonObject类型。

你可以在这里看到库中的JsonObject定义:

https://github.com/Kotlin/kotlinx.serialization/blob/ffe216f0293231b09eea24a10aa4bc26ff6d5b90/runtime/commonMain/src/kotlinx/serialization/json/JsonElement.kt#L217

以下是使用kotlinx.serialization类手动构造JsonObject的示例

代码语言:javascript
复制
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)
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62825550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档