저는 json webservice를 가지고 있습니다. 저는 spring rest 템플릿을 사용하고 있습니다. 요청 매개 변수 중 하나는 인터페이스입니다. 내 json 요청을 생성하는 주석 (Jackson 또는 Jaxb)의 올바른 조합을 찾고 있습니다.Java Json 직렬화 인터페이스 유형
내 요청은 다음과 같이해야합니다 :
{
"request": {
"accountIdentifier": {
"field1" : "value",
"field2" : "value"
}
}
}
요청 클래스 :
@XmlRootElement
@XmlType
@XmlAccessorType(XmlAccessType.FIELD)
public class Request {
@XmlAnyElement
@XmlElementRefs({@XmlElementRef(type = SpecificAccountIdentifier.class)})
private AccountIdentifier accountIdentifier;
public Request() {
}
}
AccountIdentifier :
{
"request": {
"specificAccountIdentifier": {
"field1" : "value",
"field2" : "value"
}
}
}
그러나 지금은이 같은 마샬링 것
@XmlSeeAlso(SpecificAccountIdentifier.class)
public interface AccountIdentifier extends Serializable {
}
SpecificAccountIdentifier는 :
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement
@XmlType
public class SpecificAccountIdentifier implements AccountIdentifier {
private static final long serialVersionUID = 8894475816041559L;
private Long field1;
private Long field2;
...class details...
}
나는 @JsonTypeInfo의 몇 가지 조합을 시도했지만, 바로 일을 아무것도 얻을 수 없습니다.
UPDATE :
에도 아래의 대답에보고 후, 난 여전히 일에 아무 것도 얻을 수 없었다, 그래서 난 그냥 내 자신의 사용자 정의 시리얼을 쓰기까지했다.
당신은 개인 AccountIdentifier accountIdentifier의 이름을 변경한다; 비공개 AccountIdentifier specificAaccountIdentifier에? – johnII
그래도 결국에는 여러 가지 구현이 있으므로 변수 이름 만 변경하면 작동하지 않습니다. – draconswan
이 "specificAccountIdentifier"는 어떤 구현에 따라 동적 인 것을 의미합니까? – johnII