Kotlin将抽象类中的变量反序列化

时间:2019-02-18 14:17:11

标签: json serialization kotlin

我有一个对象,该对象扩展了继承接口的抽象类。使用Kotlin序列化时,它不会序列化抽象类上的属性。 例如:

@Serializable
class User(private val uid: String): BaseClass()

abstract class BaseClass(): CacheClass {
    override val cacheDate: Long = 0L
}

interface CacheClass {
    val cacheDate: Long
}

变量cacheDate将永远不会序列化。如何确保抽象类上定义的变量实际上将被序列化? 我不是要使用其他库。我正在使用发现here

的Kotlin序列化

1 个答案:

答案 0 :(得分:0)

来自https://github.com/Kotlin/kotlinx.serialization/blob/master/docs/examples.md

  

支持的属性:

     
      
  • 类构造函数的val和var属性。构造函数仅具有属性(没有参数)是必需的。

  •   
  • 如果使用内部序列化(类上有@Serializable注释),则主体val和var都具有可见度级别。

  •   

但是cacheDate都不是;它是没有@Serializable的超类的body属性。您可以尝试注释超类,但基于the proposal中的描述,我希望它不起作用。如果没有,write a custom serializer