当前位置: 首页 > 知识库问答 >
问题:

无法使用Spring Rest模板反序列化START_OBJECT中的java.lang.String实例

路和悌
2023-03-14

我正在使用Rest模板来调用第三方Restful API。但是我得到了“Can not serialize instance of java.lang.String out of 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.html" target="_blank">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:sun.net.www.protocol.http.httpurlConnection$httpPinputStream@3DD83DD8;行:1,列:1]处的START_OBJECT标记外的java.lang.String实例;嵌套异常为org.codehaus.jackson.map.JSONMappingException:无法反序列化[source:sun.net.www.protocol.http.httpurlconnection$httppinputstream@3dd83dd8;行:1,列:1]处的START_OBJECT令牌外的java.lang.String实例

我做错了什么?

共有1个答案

丁长卿
2023-03-14

我找到了解决办法。问题是我只使用了一个消息转换器。移除

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

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

<!-- RESTful interaction -->
<bean id="restTemplate" class="org.springframework.web.client.RestTemplate" />
 类似资料:
  • 我第一次遇到ObjectMapper与string.class一起使用,我尝试将json作为string提供,得到了JSONMappingException。你能帮我理解一下为什么吗? 答复: 线程“Main”Com.FasterXml.Jackson.DataBind.JsonMappingException异常:无法反序列化位于[Source:{“Response”:“Success”}处的S

  • 例外情况: 套接字处理程序 我相信当JSON被解析为WorkstationRequest对象时会出现异常,原因是下面的项。这是套接字处理程序: 我不知道如何开始调试它。堆栈跟踪从未触及我的应用程序。我正在使用部署我的.jar,并使用执行它

  • 我收到下面的错误信息,请有人帮助或建议如何最好地调试这个。 我正在尝试从REst API调用反序列化Products对象。在我添加代码反序列化Price子类之前,代码一直运行良好。如下所示, 我的Price pojo如下所示, 我编写了一个Junit测试来尝试并模拟该错误,

  • 我已经做了一个Lambda函数,我想通过URL在API网关的帮助下访问它。 我已经全部设置好了,我还在API网关中创建了一个主体映射模板,如下所示: 然后触发HTTP GET请求,如下所示: 这是完整的错误消息:

  • 我想从angular 8前端向spring boot API发送一个JSON对象。我是这些框架的新手,我有点迷茫。 错误: “无法将的实例从START_OBJECT标记反序列化到[源:(String)”{“coordines”:[{“lat”:76.00542202728906,“lng”:-71.76493508359451},{“lat”:62.96921913888247,“lng”:-11

  • 我编写了一个微服务来对API进行HTTP调用。代码如下所示。 当我使用构建它时,它运行得非常完美。然而,当我将其作为SpringBoot应用程序运行时,我会得到以下错误: