Создание пользовательской стратегии именования свойств Джексона - PullRequest
0 голосов
/ 10 июля 2020

Многие из внешних API-интерфейсов, которые я называю, возвращают поля объекта в этом формате «FIRST_NAME». Однако я хочу отправить их в верблюжьем кейсе «firstName»

Не отмечая каждый объект, который у меня есть как:

private String firstName;

@JsonGetter(“firstName”)
public String getFirstName(){
     returns firstName;
}

@JsonSetter(“FIRST_NAME”)
public void setFirstName(String firstName) 
{
this.firstName=firstName;
}

Я попытался создать настраиваемый PropertyNamingStartegy, но не смог получить это работать. У кого-нибудь есть решение?

1 Ответ

0 голосов
/ 10 июля 2020

Судя по опечатке в вашем коде returns, я вижу, что этот код набран вручную.

На самом деле ваше решение, в котором разные имена в @JsonGetter и @JsonSetter должны работать. Возможно, у вас есть настройки Джексона, которые мешают ему работать. Я не могу сказать почему, не видя вашего полного кода. В любом случае, я дам вам другое решение.

@ JsonAlias ​​ определяет альтернативное имя во время десериализации. Исходное имя ("firstName" в вашем примере) по-прежнему работает.

Либо введите в поле

@JsonAlias("FIRST_NAME")
private String firstName;

, либо @JsonSetter метод

private String firstName;

@JsonGetter("firstName")
public String getFirstName() {
    return firstName;
}

@JsonSetter
@JsonAlias("FIRST_NAME")
void setFirstName(String firstName) {
    this.firstName = firstName;
}

Полный тестовый код на Github . Если все еще не работает, либо разветвите мой репозиторий и перейдите на свой класс и тест, либо поделитесь готовым к запуску проектом на Github, чтобы воспроизвести проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...