クラス:
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();
}
Jackson によって作成された json のデシリアライズに問題があります。シリアル化の結果、マップとして contactInfo を持つ json を取得しました (これは基本的に、ゲッターで返される型として持っているものです)。しかし、それを逆シリアル化すると、Jackson は contactInfo をセットとしてインスタンス化しようとしています (これは、contactInfo がセットであるためです)。しかしもちろん、Jackson は json 値を set にマップできず、奇妙な例外が発生します。だから私の質問は、その場合にマップをデシリアライズして ContactInfoInterface のセットを取得するにはどうすればよいですか?
これらはサード パーティ クラスではないため、セッターなどを追加できます。しかし、選択肢があるなら、私はむしろそれをしたくありません。
手伝ってくれてありがとう