2017-12-27 44 views
0

저는 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 :

에도 아래의 대답에보고 후, 난 여전히 일에 아무 것도 얻을 수 없었다, 그래서 난 그냥 내 자신의 사용자 정의 시리얼을 쓰기까지했다.

+0

당신은 개인 AccountIdentifier accountIdentifier의 이름을 변경한다; 비공개 AccountIdentifier specificAaccountIdentifier에? – johnII

+0

그래도 결국에는 여러 가지 구현이 있으므로 변수 이름 만 변경하면 작동하지 않습니다. – draconswan

+0

이 "specificAccountIdentifier"는 어떤 구현에 따라 동적 인 것을 의미합니까? – johnII

답변