ROOM 实体 api 字段名称以数字开头

ROOM Entity api field name starts with number

我有一个 API returns 一个以数字开头的对象,所以我无法使用 Kotlin 中的 Room 正确解析它。

@Entity(tableName = "1d")
data class 1D(
        @SerializedName("percent")
        val percent: Double?
)

收到的数据:

"1d":
{"percent":"22.0"}

有没有办法让它工作?

您可能知道 Java 并且 Kotlin 无法处理以数字开头的变量名。 问题来自这样一个事实,它会导致这样的事情:

int 12 = 14 // ????

int 7f = 8 // again 7 float is 8...

由于您使用的是 API,我猜您得到的是 JSON 数据。 我的建议是遍历数据并扫描这些问题。 如果你遇到在给它添加一个唯一的前缀然后才保存。 如果您稍后需要将数据序列化回 API,请再次执行相同的操作,同时在每次遇到前缀时删除前缀。

感谢 Itamar Kerbel,它让我使用拦截器找到了这个答案: