Десериализация JSON с несколькими типами в одном поле

Я хотел бы десериализовать JSON (с помощью Jackson 1.9.11 и RestTemplate 1.0.1), в котором одно поле может иметь несколько значений типа, например:

    {"responseId":123,"response":"error"}

или же

    {"responseId":123,"response":{"foo":"bar", ... }}

Либо тот, либо другой случай работает правильно с одним установщиком определенного типа (пользовательский класс ответа String od), но когда я помещаю в свой установщик переопределения bean-объекта сущности возможность обрабатывать оба случая, возникает исключение:

Caused by: org.springframework.web.client.RestClientException: Could not extract response: no suitable HttpMessageConverter found for response type [xxxx.templates.ExportResponse] and content type [application/json;charset=utf-8]

Я думал о трех решениях, но ни одно из них не заработало:

используя только String setter, а внутри используйте ObjectMapper, чтобы удалить эту строку, если она не равна "ошибка", но когда приходит этот JS Array,не строка, поэтому не используется установщик строк :(.использовать полиморфную обработку типов (аннотация @JsonTypeInfo) с собственным расширением JsonDeserializer - I 'Я все еще пытаюсь понять это и реализовать.создать список HttpMessageConverter и поместить внутрь всех конвертеров сообщений, я могу использовать. Но я считаю, что этот шаг не нужен, потому что используется только MappingJacksonHttpMessageConverter, я прав?РЕДАКТИРОВАТЬ: как это работает сейчас

Сеттер в бине сущности:

@JsonDeserialize(using = ResponseDeserializer.class)
public void setResponse(Object responseObject) {
    if(responseObject instanceof Response)
        response = (Response) responseObject;
}

Метод десериализации в ResponseDeserializer:

public Response deserialize(JsonParser parser, DeserializationContext context) throws IOException, JsonProcessingException {
    Response response = new Response();

    if(JsonToken.START_OBJECT.equals(parser.getCurrentToken())) {
        ObjectMapper mapper = new ObjectMapper();
        response = mapper.readValue(parser, Response.class);
    } else
        throw new JsonMappingException("Unexpected token received.");

    return response;
}

Ответы на вопрос(1)

Ваш ответ на вопрос