kotlinx.serialization是否处理类版本?
有。我不知道这有多好,但它至少是一种简单的机制,用于测试类是否在序列化和反序列化之间发生更改。kotlinx.serialization是否有任何这样的机制来匹配已序列化的类的版本与当前的版本(例如,可能是的校验和或哈希代码)?如果没有,是否有避免此类错误的推荐最佳实践?似乎kotlinx.serialization是否处理类版本?,kotlin,kotlinx.serialization,Kotlin,Kotlinx.serialization,有。我不知道这有多好,但它至少是一种简单的机制,用于测试类是否在序列化和反序列化之间发生更改。kotlinx.serialization是否有任何这样的机制来匹配已序列化的类的版本与当前的版本(例如,可能是的校验和或哈希代码)?如果没有,是否有避免此类错误的推荐最佳实践?似乎serialVersionUID不是跟踪更改的机制。相反,它是一种机制,用于: 如果接收方为对象加载的类的SerialVersionId与相应发送方的类的SerialVersionId不同,则反序列化将导致InvalidCl
serialVersionUID
不是跟踪更改的机制。相反,它是一种机制,用于:
如果接收方为对象加载的类的SerialVersionId与相应发送方的类的SerialVersionId不同,则反序列化将导致InvalidClassException
kotlinx.serialization失败取决于特定的编码器/解码器及其配置方式。例如,Json
可以配置为在意外字段上失败,或者以静默方式忽略它们
如果序列描述符与预期的序列化数据不匹配,则会出现运行时序列化异常;因此,一些序列化逻辑可能已经运行,但仍然会失败
因此,问题是你希望实现什么。如果您希望尽早失败(不确定为什么会有好处),您可能会编写一个自定义序列化程序,其中包括一个基于SerialDescriptor
中包含的信息的hashcode,正如您所建议的那样
实际上,您最好在系统的其他地方应用一些版本控制,例如在确定有效负载版本的包装器中。在Java中,
serialVersionUID的值
嵌入到其二进制文件中。序列化是一种与格式无关的API,有几种常用exchange格式的实现。它应该如何与JSON一起工作?