Привет, ребята, я получаю следующую ошибку при отправке запроса от почтальона
org.springframework.core.codec.DecodingException: ошибка декодирования JSON: не удалось разрешить идентификатор типа «4» как подтип com.myproject.onetoone.viewmodels.request.TopicGenerationRequest : идентификаторы известных типов = [GoalsGenerationRequest, TodoGenerationRequest, TopicGenerationRequest]; вложенное исключение — com.fasterxml.jackson.databind.exc.InvalidTypeIdException: не удалось разрешить идентификатор типа «4» как подтип com.myproject.onetoone.viewmodels.request.TopicGenerationRequest: известные идентификаторы типов = [GoalsGenerationRequest, TodoGenerationRequest, TopicGenerationRequest] в [Источник: (io.netty.buffer.ByteBufInputStream); строка: 2, столбец: 13]
мой родительский класс:
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type") @JsonSubTypes({ @Type(value = GoalsGenerationRequest.class, name="GoalsGenerationRequest"), @Type(value = TodoGenerationRequest.class, name="TodoGenerationRequest") }) @Getter @Сеттер @AllArgsConstructor @NoArgsConstructor общественный класс TopicGenerationRequest { частный тип int;
Дочерний класс GoalsGenerationRequest:
import com.myproject.onetoone.viewmodels.request.TopicGenerationRequest; импортировать com.fasterxml.jackson.annotation.JsonTypeInfo; импортировать com.fasterxml.jackson.annotation.JsonTypeName; импортировать ломбок.AllArgsConstructor; импортировать ломбок.Getter; импортировать ломбок.NoArgsConstructor; импортировать ломбок.Setter; импортировать java.util.List; @JsonTypeName("GoalsGenerationRequest") @Getter @Сеттер @NoArgsConstructor @AllArgsConstructor публичный класс GoalsGenerationRequest расширяет TopicGenerationRequest { частный список целей ;
Дочерний класс TodoGenerationRequest:
@JsonTypeName("TodoGenerationRequest") @Getter @Сеттер публичный класс TodoGenerationRequest расширяет TopicGenerationRequest { @NotNull(message = «Необходимо передать действительный UUID») частный UUID OwnerId; @NotBlank(message = «Необходимо добавить допустимое название») частный заголовок строки; частный крайний срок ZonedDateTime;
Дочерний класс GoalsGenerationRequest с именем Goal:
@Getter @Сеттер @NoArgsConstructor @AllArgsConstructor Цель публичного класса { частный тип int; частный внутренний идентификатор;
Запрос сделан от почтальона следующим образом:
{ «тип»: 4, "цели": [ { «тип»: 3, "идентификатор": 456 }, { «тип»: 3, "идентификатор": 454 } ]
Конечная точка, в которой отображается запрос, имеет следующую логику:
Mono ProfileIdentityMono = Utility.getUserPrincipal().map(UserPrincipal::getProfileID); Mono GenerationRequest = serverRequest.bodyToMono(TopicGenerationRequest.class) .onErrorResume(castError -> Mono .error(new ClientErrorException(ErrorCodes.INVALID_REQUEST, "укажите допустимое тело json")));
Пожалуйста, помогите
Мобильная версия