У меня есть тип объекта шаблона ExternalActionReqBean, имеющий объект, который может быть установлен любым классом, посредством указания полей действия
Допустим, если action = "FROZEN", полезная нагрузка ExternalActionReqBean-> будет иметь тип класса ExternalActionFrozenReqBean, если action = "UNFROZEN" Будет использоваться тип класса ExternalActionUnFrozenReqBean.
если полезная нагрузка похожа на следующую, каков наилучший способ сделать это?
{"txnID":«txn», «action»: «FROZEN», «resource»: «PNSENDER», «payload»: {«msisdn_list»: [«xxxx», »xxx», «xxx»]}}
ExternalActionReqBean externalActionReqBean = GSON.fromJson(payload, ExternalActionReqBean.class);
if("FROZEN".equals(externalActionReqBean.getAction())){
// externalActionFrozenReqBean = GSON.fromJson(externalActionReqBean.getPayload(),ExternalActionFrozenReqBean.class);
}
@Data
@AllArgsConstructor
public class ExternalActionReqBean {
private String txnID;
private String action;
private String resource;
private Object payload;
}
@Data
public class ExternalActionFrozenReqBean {
private List<String> msisdn_list;
}
@Data
public class ExternalActionUnFrozenReqBean {
private String result;
}