【问题标题】:Migration when the structure of the data class changes数据类结构发生变化时的迁移
【发布时间】:2021-06-01 12:04:44
【问题描述】:

我有一个名为Subject 的数据类。在某些情况下,我需要对其进行序列化并将其保存到本地文件中。然后,出于某种原因,我需要从本地文件中反序列化它。问题是:当我的应用升级和Subject类发生变化时,如何保留旧数据并成功反序列化?

【问题讨论】:

    标签: java android kotlin moshi


    【解决方案1】:

    您可以使用 https://www.geeksforgeeks.org/serialversionuid-in-java/

    SerialVersionUID 用于确保在反序列化期间加载相同的类(在序列化过程中使用)。

    这是为了避免问题。否则,您可以使用新类成员中的默认值来使用新类读取旧值。

    一些自定义序列化库对此有注释: https://www.baeldung.com/jackson-field-serializable-deserializable-or-not https://doc.akka.io/docs/akka/current/serialization-jackson.html(包括二进制)

    【讨论】:

    • 谢谢!我知道SerialVersionUID@Transient,但它不适合我的情况。如果我使用相同的SerialVersionUID,反序列化后可能会崩溃,崩溃很难被发现。所以解决方案可以是:像DAO框架Room一样,手动将旧数据映射到新的类结构。但我不知道如何实现它。
    猜你喜欢
    • 1970-01-01
    • 2014-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-20
    • 2019-05-23
    • 2021-10-09
    • 1970-01-01
    相关资源
    最近更新 更多