我有一个包含大量字段的可序列化对象,其中一些是必需的,另一些是可选的。为了使这个对象易于使用,我在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(...)
,因此,bar
或zip
都不会被反序列化。
我发现我可以通过将@JsonProperty
注释直接放在构建器的私有字段而不是设置器上来解决这个问题,所以我有一个解决方法,但是有一个更好的方法?
构造函数可以在@JsonCreator
注释的帮助下接受多个参数。是否有可以应用于setBarAndZip(...)
的等效注释,让杰克逊看到@JsonProperty
注释的参数?
答案 0 :(得分:0)
来自jackson-user Google Groups页面:
Tatu Saloranta
不,目前没有办法达到目标 多参数设定者。从注释角度看它应该是 可以只使用
@JsonSetter
用于此类方法,但在内部 那些尚未得到支持。他们会很乐意支持,但愿意 由于各自的内部假设,可能需要大量工作 setter方法只处理单个属性。- + Tatu + -