Невозможно десериализовать экземпляр java.lang.String из START_OBJECT с помощью шаблона Spring Rest

Я использую шаблон Rest для вызова стороннего Restful API. но я получаю сообщение «Не удается сериализовать экземпляр java.lang.String из START_OBJECT». Ниже приведен код:

xml file:

<!-- RESTful interaction -->
<bean id="jsonConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
    <property name="supportedMediaTypes" value="application/json" />
</bean>
<bean id="restTemplate" class="org.springframework.web.client.RestTemplate">
    <property name="messageConverters">
        <list>
            <ref bean="jsonConverter" />
        </list>
    </property>
</bean>

**java code:**

response= restTemplate.getForObject(url, String.class);

URL-адрес является допустимым URL-адресом в методе restTemplate.getForObject(). Я проверил, что он поместил тот же URL-адрес в браузер, и он создает действительный объект JSON.

Ниже приведена ошибка, которую я получаю:

[5/9/13 16:25:56:352 CDT] 00000028 SystemErr R org.springframework.http.converter.HttpMessageNotReadableException: не удалось прочитать JSON: невозможно десериализовать экземпляр java.lang.String из токена START_OBJECT в [Источник : sun.net.www.protocol.http.HttpURLConnection$HttpInputStream@3dd83dd8; строка: 1, столбец: 1]; вложенным исключением является org.codehaus.jackson.map.JsonMappingException: невозможно десериализовать экземпляр java.lang.String из токена START_OBJECT в [Источник: sun.net.www.protocol.http.HttpURLConnection$HttpInputStream@3dd83dd8; строка: 1, столбец: 1]

Что я делаю не так?


person Sameer Malhotra    schedule 09.05.2013    source источник
comment
Как выглядит ответ JSON от остальной службы?   -  person clav    schedule 10.05.2013
comment
Это действительный файл JSON, но я хотел зафиксировать этот ответ JSON в виде строки.   -  person Sameer Malhotra    schedule 10.05.2013
comment
На что это похоже? Вы можете опубликовать JSON?   -  person clav    schedule 10.05.2013


Ответы (1)


Я нашел решение. Проблема заключалась в том, что я использовал только один конвертер сообщений. После удаления

<property name="messageConverters">
        <list>
            <ref bean="jsonConverter" />
        </list>
    </property>

Этот код из объявления компонента начал работать. Потому что теперь RestTemplate начал использовать собственные конвертеры сообщений. Теперь код выглядит так:

<!-- RESTful interaction -->
<bean id="restTemplate" class="org.springframework.web.client.RestTemplate" />
person user984175    schedule 10.05.2013
comment
В частности, я добавил преобразователь строк: converts.add(new StringHttpMessageConverter()); - person AlexG; 08.01.2019