Я использую swagger-spring-mvc 0.9.5, и в моих ответных данных есть такие поля:
@ApiModelProperty("Some description")
private List<Account> accounts;
Краткая версия вопроса: как я могу получить от этой аннотированной Java, например, Objective C через swagger-codegen?
Чванливый JSON, который генерируется при этом:
accounts: {
description: "Some description",
items: {
type: "Account"
},
required: false,
type: "List"
}
Мой коллега загружает это в swagger-codegen для создания классов Objective C, и он создает код, который не компилируется.
@property (nonatomic, strong) NSArray<Optional, NSArray> *accounts;
потому что NSArray
(внутри < >
) не является протоколом.
Файлы шаблонов чванства (усы) создают протокол для каждой модели. Когда этот протокол указан в массиве, он используется JSONModel для создания правильных моделей из данных внутри списка/массива. Таким образом, в этом случае ожидаемый результат
@property (nonatomic, strong) NSArray<Optional, MAAccount> *accounts;
Это создаст NSArray
из MAAccount
(где Account
— тип объекта, а MA
— префикс, который уже есть у swagger).
Если мы отредактируем чванливый JSON вручную, чтобы изменить List
на array
(как предлагается в различных подобных случаях), вывод будет правильным, но мы хотим избежать этого ручного шага.
Итак, я попытался заставить swagger-spring-mvc использовать "array"
:
@ApiModelProperty(value = "Some description", dataType = "array")
private List<Account> accounts;
Но затем обнаружил, что dataType
игнорируется в swagger-spring-mvc 0.9.5, и, судя по всему, в springfox 2.0 он игнорируется, если только это не полное имя класса Java.
Есть ли способ добиться этого, либо заставив swagger-spring-mvc/springfox использовать "array"
, либо любым другим способом?
dataType
будет игнорироваться, если это не полное имя класса. - person CupawnTae   schedule 08.05.2015"array"
вместо"List"
, если мы опустимdataType
? `Проверим флаг, спасибо (хотя мы хотим запустить swagger-ui из той же сборки, так что это звучит немного пугающе) - person CupawnTae   schedule 08.05.2015