从 Kotlin 中的子类获取序列化名称参数



我正在尝试解析一个主要结构如下的 API 响应:

{
"ApiFunc1":{
"SomeData1":"SomeValue1",
"SomeData2":"SomeValue2",
"SomeData3":"SomeValue3"
}
}

{
"ApiFunc2":{
"SomeData4":"SomeValue4",
"SomeData5":"SomeValue5",
"SomeData6":"SomeValue6"
}
}
.
.
.

我创建了一个基类,如下所示:

class Model_BaseResponse<TResponse> : Serializable {
@SerializedName("ErrorMessage")
var errorMessage: String? = null
@SerializedName("value")
var data: TResponse? = null
}

每个 ApiFunc 返回不同的数据。我想创建一个基类,其中data: TResponse的@SerializedName("ApiFunc1"(或@SerializedName("ApiFunc2"(可以在子类中设置。有什么办法吗?我以常规方式执行此操作,定义

@SerializedName("value")
var data: TResponse? = null

在每个儿童班级中。只是对此感到好奇。提前感谢您的任何想法。

SerializedData这样的注释要求其参数是编译时常量。看看 Kotlin 中的"编译时常量"是什么意思,就会发现:

值在编译时已知的属性可以使用 const 修饰符标记为编译时常量。此类属性需要满足以下要求:

  • 对象的顶级或成员
  • 使用字符串或基元类型的值初始化
  • 没有自定义吸气剂

这些属性可以在注释中使用:

const val SUBSYSTEM_DEPRECATED: String = "This subsystem is deprecated"
@Deprecated(SUBSYSTEM_DEPRECATED) fun foo() { ... }

我相信您的用例无法满足第一个要求"顶级或对象成员"。

最新更新