首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >kotlinx.serialization是否处理类版本?

kotlinx.serialization是否处理类版本?
EN

Stack Overflow用户
提问于 2021-03-04 04:09:21
回答 1查看 71关注 0票数 2

Java serialization, there was serialVersionUID在一起。我不知道这有多好,但它至少是一种简单的机制,用于测试类是否在序列化和反序列化之间进行了更改。kotlinx.serialization是否有任何这样的机制来匹配序列化的类的版本与当前的版本(例如,可能是SerialDescriptor的校验和或哈希码)?如果没有,有没有推荐的最佳实践来避免这类bug?

EN

回答 1

Stack Overflow用户

发布于 2021-05-19 06:10:04

serialVersionUID似乎不是一种跟踪更改的机制。相反,它是 deserialization early if there is a version mismatch的一种机制

如果接收方为对象加载的类具有与相应发送方的类不同的serialVersionUID,则反序列化将导致InvalidClassException。

kotlinx.serialization会失败,具体取决于特定的编码器/解码器及其配置方式。例如,可以将Json配置为在意外字段上失败,或者以静默方式忽略它们。

如果串行描述符与预期的序列化数据不匹配,您将获得运行时序列化异常;因此,一些序列化逻辑将会运行,但仍然会失败。

因此,问题是您希望实现什么目标。如果你想早点失败(不确定为什么这是一个好处),你可以按照你的建议编写一个定制的序列化程序,其中包含一个基于SerialDescriptor中包含的信息的哈希码。

实际上,您最好在系统中的其他地方应用一些版本控制,例如在确定有效负载版本的包装器中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66464194

复制
相关文章

相似问题

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