@SerializedName val不能在构造函数中初始化



这里我有一个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并编写自己的反序列化器来解析值并将其传递给父类。

最新更新