这里我有一个POST请求使用Retrofit2返回一个json字符串,其中有一个名为"messageCode">
,还有一个baserresponse类,它定义了一个"val code";@SerializedName("code"),它是只读的。
open class BaseResponse(@SerializedName(value = "mc", alternate = ["code"]) val code: Int)
所以我写了一个类extends baserresponse并取"messageCode"然后把它交给"代码"在super中像这样:
class MyConcreteResponse(
messageCode: Int?,
val data: List<String>?
) :BaseResponse(code = messageCode)
但是当我访问"code"时,它只是0,不等于"messageCode">
我需要"code"因为另一个READ-ONLY类访问它,所以如何使用"messageCode"把它交给"代码"在超级吗?
我假设你使用的是gson库。Gson不使用构造函数来初始化数据类和变量,它使用Java反射。所以你必须编写一个自定义类来实现JsonDeserializer并编写自己的反序列化器来解析值并将其传递给父类。