对于接受多个参数的setter,是否有类似于@JsonCreator的注释?

时间:2017-01-19 22:21:21

标签: java jersey jackson

我有一个包含大量字段的可序列化对象,其中一些是必需的,另一些是可选的。为了使这个对象易于使用,我在Builder Pattern with a Twist进行了一次拍摄。这很好用,但是一些生成的Builder方法需要多个参数。这是一个例子:

@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)注释我的父类(此Builder创建的类),杰克逊处理foo没有问题。但是,它不会调用setBarAndZip(...),因此,barzip都不会被反序列化。

我发现我可以通过将@JsonProperty注释直接放在构建器的私有字段而不是设置器上来解决这个问题,所以我有一个解决方法,但是有一个更好的方法?

构造函数可以在@JsonCreator注释的帮助下接受多个参数。是否有可以应用于setBarAndZip(...)的等效注释,让杰克逊看到@JsonProperty注释的参数?

1 个答案:

答案 0 :(得分:0)

来自jackson-user Google Groups页面:

  

Tatu Saloranta

     

不,目前没有办法达到目标   多参数设定者。从注释角度看它应该是   可以只使用@JsonSetter用于此类方法,但在内部   那些尚未得到支持。他们会很乐意支持,但愿意   由于各自的内部假设,可能需要大量工作   setter方法只处理单个属性。

     

- + Tatu + -