课程:
public class Contact implements ContactInterface {
private Set<ContactInfoInterface> contactInfo;
public Map<String, ContactInfo> getContactInfo() {
// create maps from contactInfo set
return map;
}
//no setter
}
public class ContactInfo implements ContactInfoInterface {
private String contactInfoValue;
public String getContactInfoValue {
return this.contactInfoValue;
}
public void setContactInfoValue(String value) {
this.contactInfoValue = value;
}
}
杰克逊混音:
public abstract class ContactMixIn implements ContactInterface {
@JsonProperty
public abstract Map<String, ContactInfo> getContactInfo();
}
我在反序列化杰克逊创建的 json 时遇到问题。在序列化的结果中,我得到了 json,其中我有一个 contactInfo 作为映射(这基本上是我们在 getter 中作为返回类型所拥有的)。但是当我反序列化它时,杰克逊试图将contactInfo实例化为一个集合(这也是真的,因为contactInfo是一个集合)。但是杰克逊当然不能将 json 值映射到 set 并且会发生奇怪的异常。所以我的问题是在这种情况下如何反序列化地图以获得一组 ContactInfoInterface?
它们不是第三方类,所以我可以向它们添加 setter 或其他任何东西。但如果有一个选项,我宁愿不这样做。
感谢帮助