我有一个如下所示的数据类,其中有一个类型为 Duration:
的成员@Serializable
data class DataClass(
val fieldOne: Long,
val fieldTwo: String,
val fieldThree: Duration,
) {
constructor() : this(0, "", Duration.ZERO, "")
}
我正在使用 Firebase 实时数据库来存储此 DataClass,并且在反序列化 DataClass 对象时遇到问题。
我发现,即使 fieldThree 中保存的值已正确存储在 Firebase 实时数据库中,但在应用程序中对其进行反序列化时,该值为零 (0)。
发生这种情况是因为默认构造函数到位,我不明白为什么。
我需要默认构造函数,否则我在反序列化时会收到错误,指出 DataClass 中缺少默认构造函数。
我知道我需要 Kotlin 1.7.20 才能序列化 Duration 对象(参考此处),并在我的应用程序中这样做了。我还尝试实现上面参考中建议的自定义序列化器。
无论值如何,所有其他字段都会正确反序列化。
DataClass 实例化的示例可以是:
DataClass(12345, "", Duration.hours(1))
我在这里做错了什么?