Имя поля api объекта ROOM начинается с номера

У меня есть API, который возвращает объект, начинающийся с числа, поэтому я не могу правильно его проанализировать с помощью Room in Kotlin.

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

Данные получены:

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

Есть ли способ заставить это работать?


person Tom    schedule 20.05.2019    source источник


Ответы (2)


Как вы, наверное, знаете, Java и Kotlin не могут обрабатывать имена переменных, начинающиеся с цифры. Проблема заключается в том, что это приведет к таким вещам, как:

int 12 = 14 // ????

or

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

Поскольку вы используете API, я предполагаю, что вы получаете данные JSON. Я предлагаю вам просмотреть данные и просканировать их на предмет подобных проблем. Если вы столкнетесь с добавлением к нему уникального префикса и только потом сохраните. Если позже вам потребуется сериализовать данные обратно в API, делайте то же самое еще раз, удаляя префикс каждый раз, когда он встречается.

person Itamar Kerbel    schedule 20.05.2019

Благодаря Итамару Кербелю, он привел меня к этому ответу с использованием перехватчиков:

https://stackoverflow.com/a/43651958/666661

person Tom    schedule 20.05.2019