问题标签 [kotlinx]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
672 浏览

kotlin - 如何在命令行编译 kotlinx.serialization 库?

这与我想要完成的非常接近。如何使用外部 java 库在命令行中编译和运行 kotlin 程序

我真的很想学习如何编译和运行包含库的简单代码,但是在包含类路径时我有点迷失了。

我目前正在尝试编译和运行

使用

用这个编译器编译

https://blog.jetbrains.com/kotlin/2020/07/kotlin-1-4-rc-released/

文章底部允许的 lib 是 kotlinx-serialization-runtime-1.0-M1-1.4.0-rc.jar 的来源。我之所以选择这个运行时 jar,是因为当我使用新的 kotlin 4.0.21 编译器时,它需要您自己构建的 kotlin-serialization-runtime-1.0.1.jar,但是当我下载源代码并运行 gradle build 时,它不需要似乎生成了(单独的问题,但很想知道如何自己构建运行时 jar)

当我尝试跑步时,我得到

我知道我需要在运行时包含一个类路径

但尝试了一切都没有成功

我尝试了许多不同的组合,包括使用和不使用 -Xplugin="C:\PROGRA~1\Kotlin\lib\kotlinx-serialization-compiler-plugin.jar 进行编译似乎没有什么不同,所以我离开了它离开。

我尝试编译为 java .jar 和 kotlin .class 文件似乎都需要在运行时的类路径信息。我宁愿编译成一个 kotlin .class 并将 java 排除在外,直到我真正需要它为止。通过这种方式,我可以了解 java 在我的应用程序中真正在做什么。

我想我真正想知道的是如何确定运行时可执行文件运行所需的内容。我发现这个站点有助于显示依赖关系,但适用于旧版本的 kotlin https://kotlin.binarydoc.org/org.jetbrains.kotlin/kotlin-compiler-dist/1.3.71/package?package=kotlinx.serialization

我也一直在使用https://github.com/google/android-classysharkhttps://github.com/borisf/classyshark-bytecode-viewer进入 .class 文件

但是当人们在 StackOverflow 上告诉其他人他们需要使用什么类路径来解决他们的问题时,这似乎很神奇。有人可以教我如何在没有gradle的情况下钓鱼吗?

ps 如果有人有任何好的资源来学习 gradle 如何构建项目的内部知识。我在这里看了一点https://docs.gradle.org/current/userguide/userguide.pdf但似乎没有帮助。也许我错过了什么。此外,此页面https://kotlinlang.org/docs/reference/serialization.html#example-json-serialization似乎有我需要的东西,但似乎无法将其转移到命令行需要的东西。

这是什么意思?我认为这是指这个https://github.com/Kotlin/kotlinx.serialization

但是我如何从这个 repo 构建我需要的东西并使用它来让我的应用程序知道它的运行时依赖项在哪里?啊。我真的很想自己弄清楚这一切,但我必须为此向互联网大神跪下。对不起,我的帖子很乱。我爱学习。

0 投票
2 回答
260 浏览

kotlin - 我可以在 Kotlin 脚本中使用 kotlinx 类吗?

kotlinx是否可以在一个简单的 Kotlin 脚本中从包中导入类?

myscript.kts

运行上面的脚本kotlinc -script myscript.kts会给出这个错误:

当我检查kotlinc/lib/目录时,存在kotlinx-coroutines-core.jar等等。
我正在使用 Kotlin 编译器版本 1.4.0。

0 投票
3 回答
1282 浏览

android - 为什么在使用 kotlinx.android.parcel.Parcelize 时会收到“未实现抽象成员”警告?

我在尝试从发送 NewVehicle 对象的另一个片段中读取包时遇到此错误。

错误:类 'NewVehicle' 不是抽象的,也没有实现抽象成员 public abstract fun describeContents(): Int defined in android.os.Parcelable

新车辆.kt

0 投票
1 回答
41 浏览

android - 如何修复嵌套数组

我有一个数据模型类 CategoryModel:

我正在尝试使用 Serialize,以便可以将此类中的数据存储到 Bundle 中,以便与另一个类共享:

我注意到它已经开始用数组括号做一些奇怪的事情,看起来当我尝试反序列化它时,ArrayList 项正在转换为字符串。所以而不是

我明白了

我究竟做错了什么?

0 投票
1 回答
536 浏览

json - KotlinX 内置类的序列化

Kotlinx文档似乎没有涵盖这一点,我想知道是否有办法为现有类编写自定义序列化程序。就我而言,我需要序列化 ​​PointF 和 Color。对于 PointF,我已经这样做了:

但是,这种方法迫使我在 PointF 和 MyPointF 之间来回切换。我想知道如何将相同的序列化程序附加到现有的类(即,PointF)。在 Swift 中,我只是简单地通过 using 来做到这一点encodeToString,它实际上告诉编译器在序列化时如何处理这种对象。但我似乎无法为 Kotlin 找到方法。任何建议将不胜感激。

0 投票
1 回答
2710 浏览

android - kotlinx-serialization:未找到缺少类鉴别器('null')的多态序列化程序

我正在尝试序列化一个 json,但它会抛出 JsonDecodingException。检查代码:

序列化TestCase.kt:

错误日志:

我浏览了文档,并且按照要求执行了相同的操作,但仍然无法按预期工作。任何帮助,将不胜感激!

PS:我正在使用的依赖项:

和 kotlin 版本是 1.4.31

看起来这是一个问题,我在这里报告了这个: https ://github.com/Kotlin/kotlinx.serialization/issues/1382

0 投票
0 回答
71 浏览

android - kotlinx 序列化。反序列化泛型参数麻烦

我正在将我的项目序列化客户端从 GSON 迁移到 KotlinxSerialization 并遇到一个问题:来自 API 的所有响应都继承了一个抽象类,例如:

当我尝试从 API 获得响应时,我使用该类

并得到序列化错误 java.lang.NoSuchFieldError: No field typeSerial0 of type Lkotlinx / serialization / KSerializer;在类 Lru / .../ response / LoginResponse $$ 序列化程序中;或其超类

据我了解,反序列化器首先尝试反序列化父类的字段,并且不了解如何反序列化有效负载。这个问题花了两天时间,不知道怎么解决。

0 投票
1 回答
673 浏览

kotlin - IgnoreUnknownKeys 仅适用于 Kotlinx 和 Ktor 的一种类型

我在 Ktor 应用程序中使用 Kotlinx 序列化,并寻找相当于 Jacksons@JsonIgnoreProperties(ignoreUnknown = true)注释。我知道

我有一些类注释@Serializable。有没有办法只将 ignoreUnknownKeys 应用于一种类型类/类型,就像我可以对杰克逊做的那样?

0 投票
1 回答
368 浏览

kotlin - Kotlinx 序列化 - 如何为未知字段名编写数据类

我尝试为来自公共 API 的以下 JSON 响应编写数据类:

我的数据类看起来像:

在数据类“Result”中,我声明为“asset_name”的字段名称对于每个条目都是不同的。数据类的外观如何?有人可以帮忙吗?

0 投票
2 回答
1212 浏览

kotlin - Kotlinx.Serialization 反序列化日期

我很难找到有关如何反序列化日期字段的文档。我如何实现这一目标?我在 SO 上找到的大多数解决方案都不起作用,或者他们使用不再可用的类

编辑:我发现使用的大多数解决方案PrimitiveSerialDescriptor似乎不可用