2

我正在使用 Rest Template 来调用第三方 Restful API。但我得到“无法从 START_OBJECT 中序列化 java.lang.String 的实例”下面是代码:

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 是 restTemplate.getForObject() 方法中的有效 URL。我验证了它在浏览器中放置了相同的 URL 并生成了有效的 JSON 对象。

以下是我得到的错误:

[5/9/13 16:25:56:352 CDT] 00000028 SystemErr R org.springframework.http.converter.HttpMessageNotReadableException:无法读取 JSON:无法从 [Source 的 START_OBJECT 令牌中反序列化 java.lang.String 的实例: sun.net.www.protocol.http.HttpURLConnection$HttpInputStream@3dd83dd8; 行:1,列:1];嵌套异常是 org.codehaus.jackson.map.JsonMappingException:无法从 [Source: sun.net.www.protocol.http.HttpURLConnection$HttpInputStream@3dd83dd8; 的 START_OBJECT 令牌中反序列化 java.lang.String 的实例;行:1,列:1]

我究竟做错了什么?

4

1 回答 1

4

我找到了解决方案。问题是我只使用了一个消息转换器。删除后

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

这段代码来自它开始工作的 bean 声明。因为现在 RestTemplate 开始使用它自己的消息转换器。现在代码如下所示:

<!-- RESTful interaction -->
<bean id="restTemplate" class="org.springframework.web.client.RestTemplate" />
于 2013-05-10T15:17:01.483 回答