Part 5: polymorphic base type with @JsonTypeInfo and @JsonSubTypes
This commit is contained in:
@@ -0,0 +1,27 @@
|
|||||||
|
package com.ankurm.jackson3.part5polymorphic;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonSubTypes;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonTypeInfo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Post: Polymorphic Deserialisation — https://ankurm.com/jackson-polymorphic-deserialization/
|
||||||
|
* Section: "Setting Up the Hierarchy with @JsonTypeInfo and @JsonSubTypes"
|
||||||
|
*/
|
||||||
|
@JsonTypeInfo(
|
||||||
|
use = JsonTypeInfo.Id.NAME, // use a logical name as the discriminator
|
||||||
|
include = JsonTypeInfo.As.PROPERTY, // embed it as a field in the JSON object
|
||||||
|
property = "paymentType" // the JSON key that carries the type name
|
||||||
|
)
|
||||||
|
@JsonSubTypes({
|
||||||
|
@JsonSubTypes.Type(value = CreditCardPayment.class, name = "credit_card"),
|
||||||
|
@JsonSubTypes.Type(value = BankTransferPayment.class, name = "bank_transfer")
|
||||||
|
})
|
||||||
|
public abstract class PaymentMethod {
|
||||||
|
private Long paymentId;
|
||||||
|
private double amountDue;
|
||||||
|
|
||||||
|
public Long getPaymentId() { return paymentId; }
|
||||||
|
public double getAmountDue() { return amountDue; }
|
||||||
|
public void setPaymentId(Long v) { this.paymentId = v; }
|
||||||
|
public void setAmountDue(double v) { this.amountDue = v; }
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user