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"
}]
我已經試過:
Message incomingMessage = messageList.getMessageList().get(0);
log.info("Message Body: " + incomingMessage.getMessageBody());
這通常意味着在代碼中,你必須做某事,比如'如果(消息的instanceof EmailMessage){..投..}' – zapl
你有消息的實例或郵件的列表?無論如何,你有什麼嘗試? –
我剛剛用我試過的方法更新了它。有一個消息列表,我得到第一個嘗試,看看我能否得到這個類型。 –