Мне было интересно, есть ли возможность автоматически десериализовать json для определенных свойств объекта и сериализовать его с разными именами без реализации какого-либо настраиваемого десериализатора. Я работаю над интеграцией своего приложения с Github API, и их соглашение об именах - это то, что я хотел бы переделать. После запроса ресурсов я получаю что-то вроде:
{
full_name: "...",
description: null,
clone_url: "...",
stargazers_count: 0,
created_at: "2018-06-05"
}
но я хотел бы выставить их на своей стороне как:
{
fullName: "...",
description: null,
cloneUrl: "...",
stars: 0,
createdAt: "2018-06-05"
}
Вот как сейчас выглядит моя модель:
internal data class GithubRepositoryResponse(@JsonProperty("full_name") val fullName: String,
val description: String?,
@JsonProperty("clone_url") val cloneUrl: URL,
@JsonProperty("stargazers_count") val stars: Int,
@JsonProperty("created_at") val createdAt: LocalDate)
Использование @JsonProperty со значением является двунаправленным, поэтому я получаю те же имена свойств, что и объявленные в аннотации, чего я действительно хотел бы избежать. Есть ли какой-нибудь удобный способ справиться с таким сценарием?
@ Скоро я не смогу сохранить stargazers_count в виде звезд, у меня есть спецификация, которую я должен выполнить, поэтому это не вариант.

Аннотирование свойств класса данных с помощью @JsonAlias помогло.
Попробуйте это: stackoverflow.com/a/40730352/1532460