2017-01-16 68 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

对不起,以前没有响应。这就是我所建议的 –