클래스 :Jackson의 필드 형식보다 getter가 반환하는 다른 형식입니다. 설정하는지도를 변환하는 방법?
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에 문제가 있습니다. 직렬화의 결과에서 나는 mapInfo를 가지고있는 json을 얻었다. (이것은 기본적으로 getter에서 리턴 된 타입으로 가지고있다.) 하지만 그것을 deserialize 할 때 잭슨은 contactInfo를 인스턴스화하려고 시도하고 있습니다. (사실 contactInfo가 집합이기도합니다). 물론 Jackson은 json 값을 설정하기 위해 매핑 할 수없고 이상한 예외가 발생합니다. 그래서 내 질문에 ContactInfoInterface 집합을 얻으려면이 경우 매핑을 deserialize 할 수 있습니까?
세 번째 파트 클래스가 아니기 때문에 세터 나 다른 것들을 추가 할 수 있습니다. 그러나 옵션이 있다면 나는 그렇게하지 않을 것입니다. 도움
가장 간단한 방법으로 contactInfo 세트에 새로운 기본 getter를 추가 할 수 있을지 궁금합니다. public Set getContactInfo() {}하지만 ContactInterface에 추가하지 말고 ContactInterface를 구현하는 대신 Contact 클래스를 확장하도록 ContactMixIn을 변경하지 마십시오. . 어떻게 생각해? –
user1802311