问题标签 [kotlinx.serialization]

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 回答
3157 浏览

kotlin - 接口/实现的序列化器

假设有一个接口和 2 个(或更多)实现:

我想实现网络传输最简洁的JSON,即{"runnable":"H"}for Horse和{"runnable":"D"}for Dog

如果我无法修改接口和实现,我想将接口/实现序列化为 JSON,根据 Kotlin 的文档,我必须编写一个 自定义序列化程序,并使用它SerializersModule来实现目标。

假设只有HorseDog实施IRunnable,这就是我所做的:

但是当我尝试将 a 转换Horse为 JSON ...

它输出错误:

在这种情况下如何实现类似 {"runnable":"H"}{"runnable":"D"}

谢谢。

环境:

更新,完整的错误信息:

0 投票
1 回答
1358 浏览

kotlin - 根据字段值反序列化为密封子类

我有一个字段,我想根据该 Json 对象上的值将其反序列化为密封子类的实例。

响应模型:

我的密封类

就目前而言,我得到了一个序列化异常,因为序列化程序不知道该怎么做:

kotlinx.serialization.SerializationException:sealed_subclass_one 未在 com.myapp.MyResponse 类的范围内注册多态序列化

是否有一种简单的方法来注册 的值,type以便在没有自定义序列化程序的情况下进行反序列化?

0 投票
1 回答
891 浏览

android - 如何为 ArrayList 使用 KotlinX 序列化和日期类型与 Algolia

我正在尝试将kotlinx serialization与 Algolia 一起用于类型ArrayList<String>Date但我无法弄清楚该serialization技术。任何指针,因为我采用了Algolia.

0 投票
2 回答
195 浏览

kotlin - Mongo 和 Kotlin 的委托问题

我最近一直在使用Kmongo 库和 Kotlin,但是我在 Kmongo 上提出了一个问题,但我不确定它是否与库有关。

我正在尝试将我的数据保存到我的 mongo 数据库(版本 4.2.2)

当我插入数据时,我只发送了一个这样的对象:val person = Person("John", "Doe") 但是当我检查我的 mongo 数据库时

如何防止fullName保存在我的数据库中?

编辑:

我试图@Transient在我的变量上使用注释,但它不起作用,并且我收到一条检查消息说:Property does not have backing field which makes it non-serializable and therefore @Transient is redundant

0 投票
1 回答
1292 浏览

kotlin - 如何使用 kotlinx.serialization 将库类序列化为 Protobuf?

如何使用kotlinx.serialization将库类序列化为 Protobuf ?由于它是不可编辑的,因此我无法按照runtime_usage.md#protobuf@SerialId中的说明为其属性添加注释。如果我在custom_serializers.md中编写自己的外部序列化程序,它不会告诉我如何为 Protobuf 序列化指定 s。SerialId

例如,我正在尝试序列化 a java.math.BigDecimal,将其存储为unscaledValueasbytes并将其存储scalesint32。使用原始的 Protobuf Java 库很容易做到这一点,但我想知道如何使用kotlinx.serialization做到这一点。

0 投票
1 回答
693 浏览

kotlin - @SerialInfo - 如何使用 Kotlinx 序列化管理用户定义的串行注释?

Kotlinx 序列化文档

根据Kotlinx.serialization用户定义的注释文档

“在序列化/反序列化过程中,您自己的注释类SerialDescriptor对象中可用”

我想做的事

我需要一个@Transient等价的,但有条件的:

  • 经典方式 where :Json.stringify(serializer, myClass)照常工作。
  • 自定义方式 where :Json.stringify(customSerializer, myClass)将返回通常的 json 但排除所有@MyAnnotation-tagged 值。

这是我的代码

我想构建一个自定义序列化器并实现类似

我发现了什么

但我不知道如何构建自定义序列化程序,以便我可以覆盖该函数Encoder.encodeElement。我可以在哪里访问自定义 Serializer 中的 ElementValueEncoder ?

我还在kotlinx.serialization github repo 中找到了这个示例演示。它使用TaggedEncoder&TaggedDecoder我可以覆盖的地方encodeTaggedValue。但是在这里我不知道如何在序列化/反序列化过程中使用这些编码器/解码器。

最后

我在哪里可以覆盖fun encodeElement(desc: SerialDescriptor, index: Int): Boolean,以及如何处理我自己定义的序列化注释?

谢谢 !!

0 投票
2 回答
10092 浏览

kotlin - 标记为 @Serializable 的 kotlinx-serialization 类没有 .serializer() 扩展函数

我有以下数据类

现在,当我尝试使用 .serializer() 函数时,它说 .serializer() 没有为 Income 类定义,因此我的项目无法编译。

我在readme.md中的文档上看了两遍。甚至观看了KotlinConf的公告视频

有没有人有同样的问题。我究竟做错了什么??

编辑:

我试图从 readme.md 中复制粘贴样本,但遇到了同样的问题。

这在我的代码中也无法编译。我目前正在使用 Kotlin 1.3..61 和 kotlinx-serialization-runtime 0.14.0

0 投票
0 回答
470 浏览

android - 带有通用消息包装器的 kotlinx 序列化

所以我有这个类:

我想将其用于从服务器发送到客户端的每条消息。我已经不得不更改以下函数,因为我不知道如何将序列化与泛型一起使用

但是现在我的客户抛出了这个错误:java.lang.RuntimeException: Failed to invoke private com.kvw.letsgo.common.Message() with no args

如何在序列化中正确使用泛型?

0 投票
0 回答
156 浏览

kotlin - 将 kotlinx.serialization 库与 Bazel 的 rules_kotlin 一起使用

如何将 kotlinx.serialization 库与 Bazel 的 rules_kotlin 一起使用?

这是我尝试过的:

,其中 Foo 是 :dto 包中的一个类。

我可以构建 dto 库,但我得到了

当我在其他包中使用 dto 库时。

0 投票
1 回答
723 浏览

spring-boot - 如何将 Spring Boot 映射器从 Jackson 交换到 kotlinx.serialization

我希望我的 Spring Boot 项目使用 kotlinx.serialization。我不知道如何正确交换映射器...如果我想使用 GSON,我可以通过 spring.http.converters.preferred-json-mapper=gson 在 props 中记下它。

有没有人在这方面取得成功?