所以我有一个POJO类,它将一个json文档(我收到的)映射到java对象。
@JsonInclude(JsonInclude.Include.NON_EMPTY)
@JsonAutoDetect(fieldVisibility = ANY, getterVisibility = NONE, setterVisibility = NONE)
public class Product implements Serializable, UniqueKeyAware {
private static final long serialVersionUID = -7311148654827944888L;
@JsonIgnore
private String uniqueKey;
@JsonProperty("uniqueKey")
private String uniqueKeyV2;
@JsonProperty("gtin")
private String gtin;
@JsonProperty("printedGtin")
private String printedGtin;
@JsonProperty("tpnb")
private String tpnb;
@JsonProperty("tpnc")
private String tpnc;
@JsonProperty("tpna")
private String tpna;
@JsonProperty("itemNumber")
private String itemNumber;
@JsonProperty("catId")
private String catId;
@JsonProperty("styleCode")
private String styleCode;
@JsonProperty("description")
private String description;
@JsonProperty("brand")
private String brand;
@JsonProperty("isOwnLabel")
private Boolean isOwnLabel;
@JsonProperty("regulatedProductName")
private String regulatedProductName;
@JsonProperty("country")
private List<Country> region;
... // remove for simplicity
我想要的是用json创建4个单独文档的最佳方法。
所以,让我们定义4个类,它们是这个pojo类的子集。
为了便于配置,我需要自定义注释,如@public、@private、@partner、@priviledge,我将在每个字段上方编写这些注释。在运行时,如果我为例如public类指定,那么将只为上面写有@public注释的字段创建实例。
我需要实现这一点。我认为,通过在jackson库中创建一些挂钩,这是可能的。拜托,我需要在一天内完成这件事,谁能告诉我怎么做。
最终产品应该是这样的:
@JsonInclude(JsonInclude.Include.NON_EMPTY)
@JsonAutoDetect(fieldVisibility = ANY, getterVisibility = NONE, setterVisibility = NONE)
public class Product implements Serializable, UniqueKeyAware {
private static final long serialVersionUID = -7311148654827944888L;
@JsonIgnore
private String uniqueKey;
@JsonProperty("uniqueKey") @public @private
private String uniqueKeyV2;
@JsonProperty("gtin") @public
private String gtin;
@JsonProperty("printedGtin") @public
private String printedGtin;
@JsonProperty("tpnb")@private
private String tpnb;
@JsonProperty("tpnc")@private
private String tpnc;
@JsonProperty("tpna")@priviledge
private String tpna;
... // removed for simplicity
在上面的例子中,@public instance将具有uniqueKey、gtin、printedGtin作为唯一属性。