android - 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?"}
解决方案
所以现在我已经为上面的所有字段赋值,id 也没有默认值,现在它似乎工作了。这似乎是一个作弊解决方案,但它的工作原理。
推荐阅读
- build - 将 DACPAC 部署到多个数据库
- python - 为什么简单反向传播击败 Nesterov 和 RMSProp
- r - ggplot2:不知道如何为标记类型的对象自动选择比例
- javascript - 将 Array.map 中的当前/选定元素渲染到模态
- python - Python将地图绘制到球体上
- javascript - 仅在锚标记上的 href onlick 上禁用页面重新加载
- node.js - NodeJS 数据库竞争条件
- sql - 在 BigQuery Standard SQL 中获取 Last Slash 之后的字符串
- windows - Windows 7 - 高 DPI - RAD Studio XE7 的 SetProcessDPIAware 问题?
- sql - 将 10 添加到 mysql 查询中的每个值