Итак, у меня есть класс 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
Я хочу, чтобы лучший способ создать 4 отдельных документа из json.
Итак, давайте определим 4 класса, которые являются подмножествами этого класса pojo.
- Общественный
- Частный
- Партнер
- Привилегия
Для удобства настройки мне нужны пользовательские аннотации, такие как @public, @private, @partner, @priviledge, которые я буду писать над каждым полем. И во время выполнения, если я укажу, например. public, экземпляр будет создан только для тех полей, над которыми написаны аннотации @public.
Мне нужно реализовать это. Я думаю, что это возможно, создав несколько хуков в библиотеке Джексона. Пожалуйста, мне нужно сделать это за один день, может кто-нибудь просто подсказать, как это сделать.
Конечный продукт должен выглядеть так:
@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 будет иметь только атрибуты uniqueKey, gtin, printGtin.