[英]Serializing an instance variable of a java class with different name based on implementation
我有一個類(消息),它有一些實例變量。 這些變量之一是接口(消息內容)類型。 在將此 class 序列化為 json 期間,我想根據實現使用名稱序列化此變量(內容)。 以下是詳細的代碼片段:
public class Message {
private String from;
private String to;
private MessageContent content;
// Getters & setters
}
public interface MessageContent {}
public class VideoMessage implements MessageContent {
private String videoUrl;
// Getters & setters
}
public class ImageMessage implements MessageContent {
private String imageUrl;
// Getters & setters
}
我的要求是,當消息被序列化並且內容是 VideoMessage 類型時,序列化的 json 應該是:
{“從”:123,“到”:345, “視頻” :{“videoUrl”:“一些網址”}}
當內容是 ImageMessage 類型時,序列化的 json 應該是這樣的:
{“從”:123,“到”:345, “圖像” :{“imageUrl”:“一些網址”}}
怎么可能通過fastxml jackson? 我正在使用 ObjectMapper 的 writeValueAsString 方法,但不知道如何實現。 我嘗試使用 @JsonTypeName 和 @JsonTypeInfo 之類的注釋來注釋 ImageMessage 和 VideoMessage,但不確定它們是否可能。
這應該可以解決問題:
public class Message {
private String from;
private String to;
}
public class VideoMessage extends Message {
private MessageContent video;
}
public class ImageMessage extends Message {
private MessageContent image;
}
public interface MessageContent {}
public class VideoContent implements MessageContent {
private String videoUrl;
}
public class ImageContent implements MessageContent {
private String imageUrl;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.