2016-01-11 249 views
4

我正在使用Swagger來測試我的休息api,我的實體類的屬性之一是日期字段,我需要yyyy-mm-dd格式的日期,但招搖的模型模式將此字段顯示爲日期時間而不是日期字段,因此它將日期顯示爲時間和區域。我如何將此日期時間轉換爲日期字段?Swagger日期字段與日期時間字段

我有一個java實體類TimeEntry.java它的一個屬性是Date,它看起來像這樣。

@ApiModelProperty(required = true) 
@JsonFormat(pattern = DATE_FORMAT) 
private Date date; 

這個領域,在招搖UI模型架構,外地日期顯示爲「日」:「2016-01-08T22:34:22.337Z」但我需要這是「日期」:「2016 -01-08「。

我曾嘗試以下:

1.

@ApiModelProperty(required = true, dataType="date") 
@JsonFormat(pattern = DATE_FORMAT) 
private Date date; 

2.Tried沿着這條代碼如下(覆蓋OverrideConvertor類),但無法找到招搖核1.3版本MVN回購。唯一可用的是1.5版本https://github.com/swagger-api/swagger-core/wiki/overriding-models

  • 顯然是從1.5版本,他們已經刪除了OverrideConvertor類 https://groups.google.com/forum/#!topic/swagger-swaggersocket/ChiknyHZiP4
  • 請幫助。

    +0

    從看[的javadoc](http://docs.swagger.io/swagger-core/current/ apidocs/IO /昂首闊步/註釋/ ApiModelProperty。html#dataType%28%29)我相信'dataType'是一個java類型,就像'java.lang.String'或'int'中的那樣,而不是'swagger type'。 –

    +0

    @ApiModelProperty是swagger註解,這個註解有一個方法dataType,它取得我們需要的類型的類的全限定路徑,在這種情況下它是org.joda.time.LocalDate。在答案部分說相同。在這裏檢查重寫屬性數據類型部分5.3:http://springfox.github.io/springfox/docs/snapshot/#swagger-1-2-vs-swagger-2-0 – Sourav

    回答

    5

    java.util.Date的問題(實際上是其中一個問題)是它確實是一個日期時間,並且招搖者正確地檢測到它。我明白@JsonFormat也是一種解決方法 - 在類型檢測期間,大舉不支持該註釋。

    您有三個選項可以正確處理日期類型。

    1)使用Joda的LocalDate作爲數據類型。如果您聲明private LocalDate date,它會正確顯示。

    2)使用java8的LocalDate,與上面相同。

    3)給招搖爲使用檢測在所述註釋的類型時,上述的,但保留屬性作爲java.util.Date類型:

    @ApiModelProperty(required = true, dataType = "org.joda.time.LocalDate") 
    

    然後,當掃描,招搖將檢測這個作爲date格式化串。

    +0

    非常感謝您回答我的問題。我嘗試了以上所有選項,但是我在swagger上獲得的日期字段的格式(對於所有三個選項)都是這樣的。 「日期」:{ 「年表」:{ 「calendarType」: 「串」, 「ID」: 「串」 }, 「請將dayOfMonth」:0, 「一週中的某天」: 「MONDAY」, 「DAYOFYEAR 「:0, 「時代」:{ 「值」:0 }, 「leapYear」:真實, 「月」: 「一」, 「monthValue」:0, 「年」:0 } – Sourav

    +0

    您能否確認您使用的swagger-core版本? 1.5.6是最新的。 – fehguy

    +0

    我們使用的是swagger-core 1.5.3版本,我還應該提到我們使用的是springfox-swager2的依賴關係。依賴於我的POM文件是: io.springfox springfox-swagger2 $ {} spring.fox.version Sourav

    2

    我的隊友找到了解決辦法。我們需要將springfox版本升級到2.3.0,之前我們使用的是springfox 2.2.2版本。在那個舊版本的Swagger的@ApiModelPreporty中有一個名爲「example」的屬性,它沒有做任何事情。從2.3.0版本開始,這個「示例」開始工作。所以在我們將springfox版本升級到2.3.0之後,我們所要做的就是如下所示。

    @ApiModelProperty(required = true,example = "2016-01-01") 
    @JsonFormat(pattern = DATE_FORMAT) 
    private LocalDate date; 
    

    下面是我們找到這些信息的鏈接:

    https://github.com/springfox/springfox/issues/998