我有一个 JSON 对象,其中包含许多属性(约 80 个属性),我想将其反序列化为一个 POJO,而无需手动创建所有属性。我可以通过使用 @JsonAnySetter
和一个Map
属性来实现此目的,就像这里描述的那样。
现在我想通过使用 Lombok 使我的 POJO 不可变来实现此目的。我尝试过如下操作,但它只会反序列化 id
和 code
属性。有没有什么方法可以让它正常工作?
@Value
@Builder
@EqualsAndHashCode
@JsonDeserialize(builder = Product.ProductBuilder.class)
class Product {
@JsonProperty
private String id;
@JsonProperty
private String code;
@Getter(AccessLevel.NONE)
@Builder.Default
@JsonProperty
private Map<String, Optional<Object>> any = new HashMap<>();
@JsonAnyGetter
public Map<String, Optional<Object>> getAny(){
return this.any;
}
@JsonAnySetter
public void setAny(String key, Optional<Object> value){
this.any.put(key, value);
}
}
Map
字段之前应用@Getter(onMethod_ = @JsonAnyGetter)
即可。我没有使用@Jacksonized、@Builder或@Singular。我发表这篇文章只是为了帮助其他人!再次感谢! - Dan