0
假設一類「Json2JavaModel」反序列化與傑克遜,在類型信息的字符串鍵
public class Jason2JavaModel {
public String someAttribute;
public Map<String, Representation> representations;
public String getSomeAttribute() {
return someAttribute;
}
public void setSomeAttribute(String someAttribute) {
this.someAttribute = someAttribute;
}
@JsonProperty(value = "_embedded")
public Map<String, Representation> getRepresentations() {
return representations;
}
public void setRepresentations(
Map<String, Representation> representations) {
this.representations = representations;
}
}
凡表示是不同的JSON表示一個共同的基礎界面內給出一個多態性圖譜。在序列化方面,沒有問題,因爲Jackson知道實際的Java類型。但是反序列化必須做到多態。類型信息存儲在每個條目的映射鍵中(不是規範的類名,而是唯一的東西)。因此,可以提供一個密鑰字符串< - >目標類配置。有沒有辦法告訴傑克遜,它應該使用映射鍵作爲類型定義來反序列化條目值?
最好的問候, 馬呂斯
嗨OldCurmudgeon和thx的答覆。我研究了你的解決方案,如果我們將Map包裝到它自己的類中,比如EmbeddedRepresentationsContainer,它就可以工作。然後,我們可以將您的方法用於定製EmbeddedRepresentationsContainerDeserializer。唉這種結構變化意味着打破我們目前的API或引入更多的方法。如果可能的話,我們希望堅持使用地圖,並教導Jackson如何正確地反序列化它。 –