【发布时间】:2021-08-05 04:30:39
【问题描述】:
考虑以下数据模型,其中 status 由 API 在顶层提供,message 在嵌套级别提供(实际上并非如此,只是为了说明问题):
data class (
@Json(name = "status")
val status: Int,
@Transient
val message: String
)
现在,假设我想将此数据模型保存到我的数据库中。我会像这样更改模型:
data class (
@ColumnInfo(name = "status")
@Json(name = "status")
val status: Int,
@ColumnInfo(name = "message")
@Transient
val message: String
)
由于Transient 注释,message 字段将不会保存到数据库中。但如果我想怎么办?如何强制 Room 保存字段但 Moshi 忽略它。
问题是我无法控制这个 API,或者它将来会如何变化,所以删除 @Transient 并将名称更改为一些随机复杂的字符串并不是一个理想的解决方案,即使它会解决问题.
在Moshi上发现了几个相关问题:
显然这是一个古老的问题......
【问题讨论】:
标签: android kotlin android-room moshi