우리는 Java SpringBoot API 를 끝점고 우리는 전달 RequestBody 의 NotifyMoiChanges 클래스는 유형입니다. 에 NotifyMoiChanges 모델 클래스 우리는 하나의 제기는 인터페이스 유형입니다.
끝점 snippet:
@PostMapping("/notifyMOIChanges")
public ResponseEntity<Void> notifyMOIChangesPost(@RequestBody NotifyMoiChanges notifyMoiChanges) {
logger.info("Received notifyMOIChanges request.");
return ResponseEntity.noContent().build();
}
RequestBody 모델 snippet:
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 기반으로 작업 제출 데이터를 매핑'value'분야의 요청으로 몸의 인터페이스 구현 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 ");
}
}
우리가 사용하여 잭슨 parser. 어떻게 할 수 있습니다. 시기 바랍니다.