0
다른 사람이 작성한 일부 코드를 선택하고 하위 클래스에 액세스하는 방법을 이해하는 데 어려움을 겪고 있습니다.JSON 다형성 POJO 클래스에 액세스
부모 클래스 :
package blah.blah.blah;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import java.io.Serializable;
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXTERNAL_PROPERTY, property = "type")
@JsonSubTypes({
@JsonSubTypes.Type(value = EmailMessage.class, name = "Email"),
@JsonSubTypes.Type(value = SMSMessage.class, name = "SMS")
})
public class Message implements Serializable {
private static final long serialVersionUID = 1L;
private String messageBody;
public String getMessageBody() {
return messageBody;
}
public void setMessageBody(String messageBody) {
this.messageBody = messageBody;
}
}
아이 클래스 :
package blah.blah.blah;
public class EmailMessage extends Message {
private String subject;
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
}
아이 클래스 :
package blah.blah.blah;
public class SMSMessage extends Message {
}
나는 JSON 메시지에서 매핑 된 메시지의 인스턴스를 가지고 있지만 난 못해 '유형'입력란에 액세스하는 방법과 '제목'입력란에 액세스하는 방법을 설명합니다 (이메일 인 경우).
JSON :
"messageList": [{
"type": "Email",
"messageBody": "Email body",
"subject": "Email subject"
}, {
"type": "SMS",
"messageBody": "SMS body"
}]
내가 무엇을 시도했다 : 코멘트에 답변을 cricket_007 및 @zapl @
Message incomingMessage = messageList.getMessageList().get(0);
log.info("Message Body: " + incomingMessage.getMessageBody());
{.. 캐스트 ..}'당신은 메시지의 인스턴스 또는 메시지의 목록을 – zapl
? 어쨌든, 당신은 무엇을 시도 했습니까? –
방금 시도한 내용으로 업데이트했습니다. 메시지 목록이 있습니다. 유형을 얻을 수 있는지 먼저 시도하고 볼 수 있습니다. –