KMM iOS 中的 kotlin.native.concurrent.InvalidMutabilityException : mutation attempt of frozen kotlin. collections.HashMap@3ee0f08

标签 kotlin kotlin-multiplatform ktor kotlin-native kotlin-multiplatform-mobile

我使用的是 Kotlin 1.5.10 和 ktor 1.6.0。
当我执行网络提取时

    private suspend fun getHello(): Model.Result {
        return httpClient.get("https://en.wikipedia.org/w/api.php?action=query&format=json&list=search&srsearch=multiplatform")
    }

使用数据模型
    object Model {
        @Serializable
        data class Result(val query: Query)
        @Serializable
        data class Query(val searchinfo: SearchInfo)
        @Serializable
        data class SearchInfo(val totalhits: Int)
    }
Android 版本编译良好并响应
Result(query=Query(searchInfo=SearchInfo(totalhits=707)))
但是,当我在 iOS 中编译它时,它返回崩溃
RESPONSE https://en.wikipedia.org/w/api.php?action=query&format=json&list=search&srsearch=multiplatform failed with exception: 
kotlin.native.concurrent.InvalidMutabilityException: mutation attempt of frozen kotlin.collections.HashMap@2566888
StackOverflow推荐下载到 1.3.10 ,但我不能这样做,因为 KMM 不会在我最新的 Android Studio 4.2.1 中编译。此外,我不将协程用于 commonMain 代码(仅在 Android 代码中)。
StackOverflow状态问题 Kodein ,但我不使用 Kodein .
注意:我的代码与 https://www.youtube.com/watch?v=_Q62iJoNOfg 相同,除了型号和网址不同。
任何人都可以建议我们如何解决这个问题?

最佳答案

我在这里发现了一个问题 https://github.com/Kotlin/kotlinx.serialization/issues/1450 .
我尝试了一种解决方法,即 useAlternativeNames = false对于 Json 序列化配置,它解决了我的问题

        install(JsonFeature) {
            val json = kotlinx.serialization.json.Json {
                ignoreUnknownKeys = true
                useAlternativeNames = false
            }
            serializer = KotlinxSerializer(json)
        }

关于KMM iOS 中的 kotlin.native.concurrent.InvalidMutabilityException : mutation attempt of frozen kotlin. collections.HashMap@3ee0f08,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67969562/

相关文章:

kotlin - 如何在 Kotlin 的 Ktor 中提取访问权限验证

kotlin - 如何在 ktor 中创建可重用的拦截器?

spring-mvc - Kotlin是否需要NotNull?

ios - Kotlin多平台库:无法为iOS生成.framework

java - 当应用程序处于后台或被终止时,如何启动我的应用程序或收到通知的 Activity ?

android - Kotlin 多平台 : Plugin [id: 'com.android.library' ] was not found

ios - 如何在 Kotlin Multiplatform Mobile 中使用 Swift 中 Flow 中的密封类数据?

kotlin - 如何确保清除由ktor Websocket客户端创建的所有Kotlin协程?

android - 底部工作表对话框高度

intellij-idea - 无法在Kotlin中转换为收藏