Десериализация / сериализация Json без изменения именования одним способом

Мне было интересно, есть ли возможность автоматически десериализовать 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 со значением является двунаправленным, поэтому я получаю те же имена свойств, что и объявленные в аннотации, чего я действительно хотел бы избежать. Есть ли какой-нибудь удобный способ справиться с таким сценарием?

Попробуйте это: stackoverflow.com/a/40730352/1532460

awesoon 23.06.2018 16:19

@ Скоро я не смогу сохранить stargazers_count в виде звезд, у меня есть спецификация, которую я должен выполнить, поэтому это не вариант.

sh1nen 23.06.2018 16:23
Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
0
2
157
1

Ответы 1

Аннотирование свойств класса данных с помощью @JsonAlias помогло.

Другие вопросы по теме