2017-01-16 65 views
2

我使用Springfox,昂首闊步爲我的春天引導REST服務揚鞭頁面。由於我的POJO中的一個組成部分,我要序列化JSON我使用:Springfox揚鞭代奇創建架構

  • javax.money.MonetaryAmount
  • java.time.LocalDate

我看到的問題是,在揚鞭,模型和模型瑪標籤爲響應表明這些領域的實施細則,即

LocalDate { 
chronology (IsoChronology, optional), 
dayOfMonth (integer, optional), 
dayOfWeek (string, optional) = ['MONDAY' or 'TUESDAY' or 'WEDNESDAY' or 'THURSDAY' or 'FRIDAY' or 'SATURDAY' or 'SUNDAY'], 
dayOfYear (integer, optional), 
era (Era, optional), 
leapYear (boolean, optional), 
month (string, optional) = ['JANUARY' or 'FEBRUARY' or 'MARCH' or 'APRIL' or 'MAY' or 'JUNE' or 'JULY' or 'AUGUST' or 'SEPTEMBER' or 'OCTOBER' or 'NOVEMBER' or 'DECEMBER'], 
monthValue (integer, optional), 
year (integer, optional) 
} 
IsoChronology { 
    calendarType (string, optional), 
    id (string, optional) 
} 
Era { 
    value (integer, optional) 
} 

MonetaryAmount { 
    context (MonetaryContext, optional), 
    currency (CurrencyUnit, optional), 
    factory (MonetaryAmountFactory«MonetaryAmount», optional), 
    negative (boolean, optional), 
    negativeOrZero (boolean, optional), 
    number (NumberValue, optional), 
    positive (boolean, optional), 
    positiveOrZero (boolean, optional), 
    zero (boolean, optional) 
} 
MonetaryContext { 
    (...) 
} 
CurrencyUnit { 
    (...) 
} 
CurrencyContext { 
    (...) 
} 
MonetaryAmountFactory«MonetaryAmount» { 
    (...) 
} 
NumberValue { 
    (...) 
} 

如果有問題,我使用的是Moneta 1.1實現javax.money.MonetaryAmount(JSR 354)。

現在,這是遠遠地長篇大論,因爲我想要的東西,所以我實現了一個串行器,並如預期我的反應(和要求)的工作。但是,模式沒有反映這一點。序列化請求之後有沒有配置模式格式的方法?

當我知道有相當多的運動部件對這個問題,我創建了一個proof of concept project以顯示其盛開的問題。

回答

2

基於your example看起來你正在轉換MonetaryAmountdoubleLocalDateString你的序列化程序。

因爲springfox不能自省傑克遜機械(至少目前還沒有:-)),我們需要告訴SpringFox你在你的串行做什麼。要做到這一點,正如您的文檔中的the documentation所述,您可以通過提供備用類型規則來提供提示。

docket 
     .directModelSubstitute(LocalDate.class, String.class) 
     .directModelSubstitute(MonetaryAmount.class, Double.class) 

有三種方法可以做到這一點,無論是通過directModelSubstitutes定期類型,genericModelSubstitutes單一類型參數的泛型類型和alternateTypeRules用於更復雜的泛型類型的用例。

+0

太好了,謝謝。有更多的本地化替代方法嗎?即LocalDate - >字符串一個地方和LocalDate - >長在另一個? – kinbiko

+0

找到了答案:你可以用'@ApiModelProperty(的dataType = 「com.qualified.ReplacedWith」)'對POJO的干將。 – kinbiko

+1

對不起,以前沒有響應。這就是我所建議的 –