Как десериализовать enum с разным форматом json для объектов используя jackson?

Нужно десериализовать объект enum который может прийти в формате

{"id": 1, "type": "First"}

или в виде

{"FIRST"}

в составе другого объекта. Сейчас это работает для одного вида json. Как это можно сделать и возможно ли?

@AllArgsConstructor
@Getter
@JsonFormat(shape = JsonFormat.Shape.OBJECT)
public enum PriorityTypeDto {
  FIRST(1, "First"),
  SECOND(2, "Second"),
  THIRD(3, "Third");

  private final Integer id;
  private final String type;

  @JsonCreator
  public static PriorityTypeDto forValues(@JsonProperty("id") Integer id) {

    return Arrays.stream(PriorityTypeDto.values())
        .filter(priority -> priority.id.equals(id))
        .findFirst()
        .orElseThrow(() -> new CustomException();
  }
}

Ответы (0 шт):