首页 > 解决方案 > Retrofit Server 响应的默认值显示为 null

问题描述

我正在调用一个 api,它会给我一些值,而另一些则没有。所以我给了一些变量默认值。但即使我没有从服务器获取它们,它们也会在日志中显示为 null 并且应用程序正在崩溃。

这是模型类:

data class FeedbackData(

    var questionNumber: Int = 0,
    var imageUri: Uri? = null,

    @SerializedName("id") val id: Int,
    @SerializedName("question") val question: String? = null,
    @SerializedName("answer") var answer: Answer = Answer()

)

data class Answer(

    @SerializedName("description") var description: String = "",
    @SerializedName("image") var image: String = ""
)

如果你看到我已经给出了一个默认对象(默认初始化)的答案,以防服务器不发送它。我的要求是,如果服务器发送它,我应该拥有它,如果没有,那么我应该能够编写该答案对象。但是当我尝试访问该答案对象时,我得到了空指针异常。

这是日志

 E/xoxo: received list: [FeedbackData(questionNumber=0, imageUri=null, id=1, question=How was the event?, answer=null), FeedbackData(questionNumber=0, imageUri=null, id=2, question=Did you face any issue?, answer=null)

这是服务器响应:

{"id":1,"question":"How was the event?"},
{"id":2,"question":"Did you face any issue?"}

标签: androidkotlinnullpointerexceptionretrofit2

解决方案


所以现在我已经为上面的所有字段赋值,id 也没有默认值,现在它似乎工作了。这似乎是一个作弊解决方案,但它的工作原理。


推荐阅读