2016-01-25 152 views
1

我正在使用Swagger爲基於jax-rs的API生成文檔。在我的車型之一,我有以下特性:Swagger不解析@XmlElementWrapper註釋

@XmlElementWrapper(name = "clip_list") 
@XmlElement(name = "clip") 
public List<Clip> mClips = new ArrayList<Clip>(); 

但是在UI中產生的JSON模式如下:

"clip": [ 
    { 
    "duration":"", 
    "url":"", 
    "thumb":"", 
    } 
] 

如此明顯的XmlElementWrapper註釋不會被解析。我如何強制Swagger正確嵌套元素?

輸出應該是這樣的:

"clip_list": [ 
    { 
    "duration":"", 
    "url":"", 
    "thumb":"", 
    } 
] 

回答

0

輸出看起來是正確的。有關更多詳細信息,請參閱Swagger存儲庫中的此issue

你可以嘗試使用@ApiModelProperty註釋操縱模型屬性的元數據,如下:

@XmlElement(name = "clip") 
@ApiModelProperty(value = "clip_list") 
@XmlElementWrapper(name = "clip_list") 
public List<Clip> mClips = new ArrayList<Clip>(); 

有關@ApiModelProperty API的詳細信息,看看在javadocs

0

Soved the issue。只需從swagger依賴項中排除以下依賴項。

  <exclusions> 
       <exclusion> 
        <groupId>com.fasterxml.jackson.jaxrs</groupId> 
        <artifactId>jackson-jaxrs-json-provider</artifactId> 
       </exclusion> 
       <exclusion> 
        <groupId>com.sun.jersey</groupId> 
        <artifactId>jersey-client</artifactId> 
       </exclusion> 
       <exclusion> 
        <groupId>com.sun.jersey</groupId> 
        <artifactId>jersey-core</artifactId> 
       </exclusion> 
       <exclusion> 
        <groupId>com.sun.jersey</groupId> 
        <artifactId>jersey-server</artifactId> 
       </exclusion> 
      </exclusions> 

排除這些後,我能夠得到註釋工作。