2017-01-19 36 views
1

我有一個可序列化的對象,有很多字段,其中一些是強制性的,其他是可選的。爲了使這個對象易於使用,我在Builder Pattern with a Twist上拍了一張照片。這很好,但一些生成的Builder的方法需要多個參數。這裏有一個例子:對於接受多個參數的setter,是否有類似於@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(...),因此,barzip都不會被反序列化。

我發現我可以通過將我的@JsonProperty註釋直接放置在構建器的私有字段而不是放置在setter上來解決這個問題,所以我有一個解決方法,但有沒有更好的方法?

構造函數可以藉助@JsonCreator註釋來接受多個參數。是否有可以應用於setBarAndZip(...)的等效註釋讓傑克遜可以在其參數上看到@JsonProperty註釋?

回答

0

jackson-user Google Groups頁:

大肚Saloranta

沒有,目前還沒有辦法有什麼相當於 多個參數的制定者。從註釋的角度來看,它應該是 可能只是使用@JsonSetter這種方法,但內部 那些尚不支持。他們會很高興支持,但由於內部假設每個 設置方法只處理單個屬性, 可能需要很多工作。

- + Tatu + -

相關問題