Я использую Springfox-swagger для создания страницы Swagger для моей службы Spring Boot REST. Как часть одного из моих POJO, которые я сериализую в JSON, я использую:
javax.money.MonetaryAmount
java.time.LocalDate
Проблема, которую я вижу, заключается в том, что в Swagger вкладки Model и Model Shema для ответа показывают детали реализации этих полей, а именно
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), если это имеет значение.
Теперь это слишком многословно для того, что я хочу, поэтому я реализовал сериализатор, и мой ответ (и запросы) работают, как и ожидалось. Однако схемы этого не отражают. Есть ли способ настроить формат схем после сериализации запросов?
Поскольку я понимаю, что в этой проблеме довольно много движущихся частей, я создал проект проверки концепции чтобы показать проблему во всей красе.