У меня есть сериализуемый объект с большим количеством полей, некоторые из которых являются обязательными, а другие необязательны. Чтобы этот объект был прост в использовании, я сделал снимок на Builder Pattern with a Twist. Это отлично работает, но некоторые из полученных Builder методов принимают более одного параметра. Вот пример:Есть аннотации, похожие на @JsonCreator для сеттеров, которые принимают более одного параметра?
@JsonProperty("foo")
public Builder setFoo(String foo) {
this.foo = foo;
return this;
}
public Builder setBarAndZip(@JsonProperty("bar") String bar, @JsonProperty("zip") String zip) {
this.bar = bar;
this.zip = zip;
return this;
}
При условии я аннотирование моего родительском класса (класс, что этот строитель создает) с @JsonDeserialize(builder = MyClass.Builder.class)
, Джексон обрабатывает foo
без каких-либо проблем. Однако он не вызывает setBarAndZip(...)
, и, как следствие, ни bar
, ни zip
не десериализуются.
Я обнаружил, что могу обойти это, поставив свои аннотации @JsonProperty
непосредственно на частные поля строителя, а не на сеттеры, поэтому у меня есть работа, но есть ли лучший способ?
Конструкторы могут принимать несколько параметров с помощью аннотации @JsonCreator
. Есть ли эквивалентная аннотация, которую я мог бы применить к setBarAndZip(...)
, что позволило бы Джексону просмотреть аннотации @JsonProperty
по своим параметрам?