Представьте себе эту запись в базе данных:
id: 21434366,
name: "John",
full_name: "John Doe",
number_of_github_repository: 4
Ключи каждого поля указаны в нижнем регистре, в формате подчеркивания.Однако общее соглашение об именовании полей / переменных основано на случае верблюда.
Вместо того, чтобы использовать само имя поля в качестве имени переменной
val number_of_github_repository: Int
Мы все предпочитаем это
val numOfGithubRepos: Int
Именно здесь вступает в действие аннотация @field: SerializedName,Если вы аннотируете имя переменной с помощью фактического имени поля базы данных, программа найдет значение из аннотированного имени и присвоит его настраиваемому имени переменной.
Например,
@field:SerializedName("number_of_github_repositories") val numOfGithubRepos: Int
Это будет искать значение в поле вашей базы данных "number_of_github_repositories" и присваивать его переменной numOfGithubRepos.
То же самое относится и к библиотеке GSON.Он преобразует нежелательные / неорганизованные имена полей в ваши предпочтительные имена переменных.По умолчанию библиотека GSON пытается найти поле из ответа Json, которое соответствует объявленному имени переменной.Поэтому, если вы только что объявили поле без аннотации, например,
val numOfGithubRepos: Int
, и если фактический объект Json был
{num_of_github_repositories: 4}
, он выдаст исключение, поскольку такого поля симя numOfGithubRepos
в ответе Json.