Я обнаружил проблему: мне нужно найти способ заставить Swagger Codegen удалить часть "visible = true", когда он генерирует класс Java. Если я удалю это вручную, это сработает. Проблема в том, что классы генерируются во время компиляции, и эта модификация будет переопределена.
Все еще нужна помощь!
Первое сообщение:
У меня есть следующее:
- Класс сущности приема, имеющий список. Checkpoint — это базовый класс, но он будет содержать только подклассы, такие как Checkpoint1, Checkpoint2 и т. д.
- ReceptionCotroller, у которого есть метод HTTP POST, сопоставленный с помощью «/receptions».
- Классы DTO для приема и контрольных точек (базовый класс Checkpoint, Checkpoint1, Checkpoint2 и т. д.), созданные с помощью Swagger CodeGen openapi 3.0.2. используя файл yml. DTO Checkpoint имеет поле дискриминатора (в файле yml) с именем «dtype», поэтому при десериализации JSON в Checkpoint он знает, к какому подклассу он относится.
Я пытался добавить поле dtype (рядом с определением дискриминатора) в Checkpoint DTO, но затем JSON, который возвращается в качестве ответа, имеет 2 поля dtype (одно со значением дискриминатора и одно с нулевым значением).
Прием и контрольная точка в файле yml:
Код: Выделить всё
Reception:
description: description1
type: object
properties:
id:
type: integer
format: int64
description: Id of the reception.
checkpoints:
type: array
items:
oneOf:
- $ref: '#/components/schemas/Checkpoint1'
- $ref: '#/components/schemas/Checkpoint2'
discriminator:
propertyName: dtype
$ref: '#/components/schemas/Checkpoint'
description: List of checkpoints attached to this reception.
Код: Выделить всё
Checkpoint:
description: Checkpoint entity.
type: object
properties:
checkpointId:
type: string
description: description1.
required:
- checkpointId
- dtype
discriminator:
propertyName: dtype
Код: Выделить всё
@ApiModel(description = "Checkpoint entity.")
@Validated
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "dtype", visible = true )
@JsonSubTypes({
@JsonSubTypes.Type(value = Checkpoint1.class, name = "Checkpoint1"),
@JsonSubTypes.Type(value = Checkpoint2.class, name = "Checkpoint2")
})
public class Checkpoint {
@JsonProperty("dtype")
private String dtype = null;
@JsonProperty("checkpointId")
private String checkpointId = null;
(.....)
Код: Выделить всё
{
"id": 123,
"checkpoints": [
{
"dtype": "Checkpoint1",
"checkpointId": "Checkpoint1"
}
}
Надеюсь, предоставленная информация позволяет понять, в чем моя проблема. Если нет, я могу предоставить дополнительную информацию.
Заранее большое спасибо!
PS: Пожалуйста, игнорируйте возможные синтаксические ошибки или опечатки, код работает и копируется правильно, но я не знаю, как игнорировать ТОЛЬКО свойство дискриминатора (dtype).
Подробнее здесь: https://stackoverflow.com/questions/572 ... e-discrimi
Мобильная версия