Переименовать поле только при сериализации в Java - PullRequest
0 голосов
/ 30 января 2019

У меня есть объект с именем AddOnsSRO.Only при сериализации. Я хочу, чтобы имена полей объекта были изменены.

Попытка использования @JsonProperty в методах получения, но это дает мне переименованное поле даже в случаях использования гдесериализация не задействована.

public class AddOnsSRO {

    private String sideCar;
    private String sideCarCoverage;

    @JsonSerialize
    @JsonProperty("abc")
    public String getSideCar() {
        return sideCar;
    }

    public void setSideCar(String sideCar) {
        this.sideCar = sideCar;
    }

    @JsonSerialize
    @JsonProperty("xyz")
    public String getSideCarCoverage() {
        return sideCarCoverage;
    }

    public void setSideCarCoverage(String sideCarCoverage) {
        this.sideCarCoverage = sideCarCoverage;
    }
}

Только при сериализации следующие поля: sideCar и sideCarCoverage должны быть переименованы в abc и xyz соответственно.

Для любого другого использования, кроме сериализации, имена полей должны быть только sideCar и sideCarCoverage.

Пожалуйста, помогите и предложите соответствующие изменения или аннотации.

Ответы [ 2 ]

0 голосов
/ 30 января 2019

ваш код выглядит хорошо ... Пожалуйста, обновите ваш Jackson Lib ... если вы используете старый

0 голосов
/ 30 января 2019

Для выполнения только сериализации используйте @ JsonGetter вместо @JsonProperty

@JsonGetter("abc")
public String getSideCar() {
    return sideCar;
}

Получатель означает, что при сериализации экземпляр класса объекта, который имеет этот метод (возможно, унаследованный отсуперкласса), через метод выполняется вызов, и возвращаемое значение будет сериализовано как значение свойства.

Вы можете добавить @JsonSetter в метод установки для десериализации:

@JsonSetter("sideCar")
public void setSideCar(String sideCar) {
    this.sideCar = sideCar;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...