Swagger + Spring: можно ли сохранить порядок полей в полезной нагрузке?

Предполагая, что мой класс полезной нагрузки:

public class Payload {
  private final long id;
  private final String aField;
}

springfox отсортирует поля полезной нагрузки в лексикографическом порядке, что даст следующую спецификацию полезной нагрузки:

{
  "aField": "string",
  "id": 0
} 

Есть ли какой-либо управляющий параметр, который сообщает springfox о сохранении исходного порядка полей?


person Sergey Pauk    schedule 23.02.2018    source источник
comment
Удалось ли вам это решить?   -  person Pra_A    schedule 26.11.2019
comment
Привет, ты нашел решение (после многих лет обновлений?)   -  person ch271828n    schedule 07.03.2021


Ответы (2)


Вы можете использовать @ApiModelProperty и укажите position:

public class Payload {

  @ApiModelProperty(value = "The id", position = 1)
  private final long id;
  @ApiModelProperty(value = "The a field", position = 2)
  private final String aField;

}
person Arnaud    schedule 23.02.2018
comment
Спасибо, я знаю об этом варианте. Вопрос заключался в том, чтобы запустить его на более высоком уровне всего с одной настройкой (представьте полезную нагрузку с 10-20-30 .. полями). - person Sergey Pauk; 23.02.2018
comment
В этом случае, вероятно, придется использовать отражение, и, судя по следующим ссылкам, использование отражения для извлечения полей не соблюдает порядок их появления (groups.google.com/forum / #! topic / swagger-swaggersocket / и stackoverflow.com/questions/1097807 / ). - person Arnaud; 23.02.2018
comment
Хорошо, тогда короткий ответ, кажется, нет - person Sergey Pauk; 23.02.2018
comment
Есть ли обходной путь на глобальном уровне? или может уровень конфигурации? - person Pra_A; 26.11.2019
comment
Это не сработало для меня в SpringFox v3.0.0 - person Doctor Parameter; 18.06.2021

Вы можете использовать @JsonPropertyOrder один раз в верхней части вашего класса, и поля будут упорядочены в том порядке, в котором они определены в классе https://www.logicbig.com/tutorials/misc/jackson/json.-property-order-annotation.html

person Jaison Varghese    schedule 27.03.2020
comment
springfox по-прежнему генерирует поле в лексикографическом порядке - person Donnie; 28.10.2020
comment
Джейсон, ты не отвечаешь на ОП. Springfox игнорирует аннотацию @JsonProprtyOrder. - person Honza Zidek; 22.01.2021