Переименуйте поля в объекте с Джексоном - PullRequest
0 голосов
/ 06 июня 2018

У меня есть JSON:

{"400" : "120Hz"} 

(на самом деле, мой JSON намного сложнее и, в основном, огромен)

Я использую Jackson для сопоставления данных сFrequencyDTO.

public class FrequencyDTO {

    @JsonProperty("400")
    private String frequency;

    public String getFreqiency() {
        return this.frequency;
    }

    public void setFrequency(String frequency) {
        this.frequency = frequency;
    }
}

После этого мне нужно отправить это DTO во внешний интерфейс, но я хочу, чтобы его поля были удобочитаемыми, например: {"frequency_value" : "120Hz"}.

Единственное, что мне пришло в голову, - это создать какой-нибудь FrequencyFrontendDTO, например:

public class FrequencyFrontendDTO {

    @JsonProperty("frequency_value")
    public String frequency;

    //getters and setters
}

и сопоставить его с FrequencyDTO.

Есть ли более чистый способ сделатьэто?

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

@ JsonAlias ​​десериализация всех псевдонимов в атрибуте.Но сериализация только для данного @ JsonProperty

public FrequencyDTO() {

@JsonProperty("frequency_value")
@JsonAlias({"400"})
private String frequency;

public String getFreqiency() {
    return this.frequency;
}

public void setFrequency(String frequency) {
    this.frequency = frequency;
}

}

0 голосов
/ 06 июня 2018

Я настоятельно советую вам использовать DTO.Узнайте, почему в этом ответе .


В качестве альтернативы вы можете использовать @JsonView.С Jackson 2.9 вы можете использовать @JsonAlias, который работает только для десериализации.

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