我正在使用 https://github.com/googlecodelabs/android-paging 的示例代码学习 Room
代码 A 用于定义 @Entity
一张 table ,你可以看到it .
通常它会添加 @ColumnInfo
字段注释,例如 @ColumnInfo(name = "first_name") val firstName: String?, ...
.
为什么作者加了@field:SerializedName
对房间数据库中的字段进行注释?
代码 A
@Entity(tableName = "repos")
data class Repo(
@PrimaryKey @field:SerializedName("id") val id: Long,
@field:SerializedName("name") val name: String,
@field:SerializedName("full_name") val fullName: String,
@field:SerializedName("description") val description: String?,
@field:SerializedName("html_url") val url: String,
@field:SerializedName("stargazers_count") val stars: Int,
@field:SerializedName("forks_count") val forks: Int,
@field:SerializedName("language") val language: String?
)
最佳答案
@SerializedName
annotation 是 Gson 的一部分,用于在 Json 中定义这些属性的名称。@ColumnInfo
annotation 是 Room 的一部分,用于在 SQLite 中定义这些属性的列名。
如果这些注释都没有定义,则属性/字段名称将用作 Json 属性或列的名称。
Why does the author add @field:SerializedName annotation to a field in Room database?
因为 Room 实体被重用为 Gson DTO。
关于android - 作者为什么要加@field :SerializedName annotation to a field in Room database?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60585265/