Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
kotlinx.serialization是否处理类版本?_Kotlin_Kotlinx.serialization - Fatal编程技术网

kotlinx.serialization是否处理类版本?

kotlinx.serialization是否处理类版本?,kotlin,kotlinx.serialization,Kotlin,Kotlinx.serialization,有。我不知道这有多好,但它至少是一种简单的机制,用于测试类是否在序列化和反序列化之间发生更改。kotlinx.serialization是否有任何这样的机制来匹配已序列化的类的版本与当前的版本(例如,可能是的校验和或哈希代码)?如果没有,是否有避免此类错误的推荐最佳实践?似乎serialVersionUID不是跟踪更改的机制。相反,它是一种机制,用于: 如果接收方为对象加载的类的SerialVersionId与相应发送方的类的SerialVersionId不同,则反序列化将导致InvalidCl

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

似乎
serialVersionUID
不是跟踪更改的机制。相反,它是一种机制,用于:

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

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

如果序列描述符与预期的序列化数据不匹配,则会出现运行时序列化异常;因此,一些序列化逻辑可能已经运行,但仍然会失败

因此,问题是你希望实现什么。如果您希望尽早失败(不确定为什么会有好处),您可能会编写一个自定义序列化程序,其中包括一个基于
SerialDescriptor
中包含的信息的hashcode,正如您所建议的那样


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

在Java中,
serialVersionUID的值
嵌入到其二进制文件中。序列化是一种与格式无关的API,有几种常用exchange格式的实现。它应该如何与JSON一起工作?