हम एक जावा SpringBoot एपीआई समापन बिंदु और हम पास के एक RequestBody के NotifyMoiChanges वर्ग के प्रकार. में NotifyMoiChanges मॉडल वर्ग हम एक दायर की है जो इंटरफ़ेस के प्रकार.
समापन बिंदु स्निपेट :
@PostMapping("/notifyMOIChanges")
public ResponseEntity<Void> notifyMOIChangesPost(@RequestBody NotifyMoiChanges notifyMoiChanges) {
logger.info("Received notifyMOIChanges request.");
return ResponseEntity.noContent().build();
}
RequestBody मॉडल स्निपेट:
public class NotifyMoiChanges {
@JsonProperty("moiChanges")
@Valid
private List<MoiChange> moiChanges = new ArrayList<MoiChange>();
..... other attributes
}
public class MoiChange {
@JsonProperty("operation")
private String operation = null; //operation value can be "Type1" or "Type2"
@JsonProperty("value")
private OneOfMoiChangeValue value = null; //value filed can be mapped with any of the OneOfMoiChangeValue Interface implentations Type1MoiChangeValue or Type2MoiChangeValue.
}
OneOfMoiChangeValue है, जो एक अंतरफलक के दो कार्यान्वयन Type1MoiChangeValue & Type2MoiChangeValue.
अब जब मैं पास के एक RequestBody के आधार पर 'ऑपरेशन' दायर डेटा मैं नक्शा करने के लिए 'मूल्य' क्षेत्र के अनुरोध के साथ शरीर के किसी भी इंटरफ़ेस कार्यान्वयन Type1MoiChangeValue या Type2MoiChangeValue.
public interface OneOfMoiChangeValue {
}
Type1MoiChangeValue:
@javax.annotation.Generated(value = "io.swagger.codegen.v3.generators.java.SpringCodegen", date = "2021-11-16T11:51:46.436+05:30[Asia/Calcutta]")
public class Type1MoiChangeValue extends ArrayList<Type2MoiChangeValue > implements OneOfMoiChangeValue {
@Override
public boolean equals(java.lang.Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
return true;
}
@Override
public int hashCode() {
return Objects.hash(super.hashCode());
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("class Type1MoiChangeValue {\n");
sb.append(" ").append(toIndentedString(super.toString())).append("\n");
sb.append("}");
return sb.toString();
}
/**
* Convert the given object to string with each line indented by 4 spaces
* (except the first line).
*/
private String toIndentedString(java.lang.Object o) {
if (o == null) {
return "null";
}
return o.toString().replace("\n", "\n ");
}
}
Type2MoiChangeValue:
@javax.annotation.Generated(value = "io.swagger.codegen.v3.generators.java.SpringCodegen", date = "2021-11-16T11:51:46.436+05:30[Asia/Calcutta]")
public class Type2MoiChangeValue extends HashMap<String, Object> implements OneOfMoiChangeValue {
@Override
public boolean equals(java.lang.Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
return true;
}
@Override
public int hashCode() {
return Objects.hash(super.hashCode());
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("class Type2MoiChangeValue {\n");
sb.append(" ").append(toIndentedString(super.toString())).append("\n");
sb.append("}");
return sb.toString();
}
/**
* Convert the given object to string with each line indented by 4 spaces
* (except the first line).
*/
private String toIndentedString(java.lang.Object o) {
if (o == null) {
return "null";
}
return o.toString().replace("\n", "\n ");
}
}
हम कर रहे हैं का उपयोग जैक्सन पार्सर. मैं कैसे कर सकते हैं यह. कृपया सलाह!