Добавьте Джексона в качестве зависимости проекта:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
</dependency>
, затем используйте @JsonTypeInfo
для вывода поля @type
, которое может использоваться получателями для различения различных меню.
@JsonTypeInfo(use=Id.NAME)
@JsonSubTypes({
@JsonSubTypes.Type(value=SimpleMenuDTO.class, name="Simple"),
@JsonSubTypes.Type(value=TastingMenuDTO.class, name="Tasting")
})
public class MenuDTO {
}
, что может дать JSON вроде:
{
// Type-specific elements
"@type" : "Tasting",
"price" : "10.0",
// Common elements
"description" : "",
"restaurantId" : 1,
"name" : ""
}
Если вам не нравится @type
, выберите свое имя с помощью @JsonTypeInfo(use=Id.NAME, property="menuType")