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

Java·spring JSON解析错误:无法反序列化START_ARRAY令牌外的实例

姚俊材
2023-03-14

我有一个带有restTemplate调用的方法,如下所示:

restTemplate.getForObject(apiUrl ,Someclass.class);

SomeClass.Class:

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Imp implements Serializable {
    @JsonProperty("Id")
    private String Id;

    @JsonProperty("ReportId")
    private String ReportId;

    @JsonProperty("Title")
    private String Title;

    @JsonProperty("Name")
    private String Name;

    @JsonProperty("Uri")
    private String Uri;

}

API返回一个数组,我收到的错误是:org.springframework.web.client.RestClientException:提取类型[class...]和内容类型[application/json;charset=utf-8]的响应时出错;嵌套异常为org.springframework.http.converter.httpmessagenotreadableException:JSON分析错误:无法反序列化COM...的实例超出START_ARRAY标记;嵌套异常为com.fasterxml.jackson.databind.exc.MismatchedInputException:无法反序列化COM...的实例超出START_ARRAY标记

我应该使用哪个restTempalte方法来获得正确的api响应?或者问题出在哪里?。谢谢!

共有1个答案

燕承安
2023-03-14

您说API返回一个数组

但是您的代码行restTemplate.getForObject(apiUrl,Someclass.class);只能对单个Someclass对象工作。

您应该使用新的parameterizedTypeReference > 以及exchange方法。

请参阅下面的链接

使用spring RestTemplate获取JSON对象列表

 类似资料:
  • 下面是POJO类: 主要功能如下:

  • 我需要向网络服务发送帖子请求,但它在异常后返回。 实际服务器响应如下: 我根据以下内容发送请求 我的代码

  • 我尝试使用jacksonapi解析json,并提供以下详细信息。但我错了。请查找以下代码和堆栈跟踪的详细信息。 JSON 控制器类 下面这个类是我的bean类。PublisheData.java 发布数据列表.java 我收到以下错误。

  • 我能解决这个错误吗?当我想添加一个新对象时,会出现这种情况 “消息”:“JSON分析错误:无法反序列化实例脱离START_ARRAY内标识;嵌套异常为com.fasterxml.jackson.databind.exc.MismatchedInputException:无法反序列化实例脱离START_ARRAY内标识\n位于[源:(PushbackInputStream);行:1,列:1]”

  • 问题内容: 我正在使用来自外部合作伙伴的API。不幸的是,返回的响应似乎没有固定的结构。理想情况下,API合同意味着它不会被违反,但是这种情况一直在发生。 无论如何,所以发生的事情是JSON响应中的字段主要是一个地图,但有时却是一个列表。 例如,假设以下是我通常得到的响应: 但是在极少数情况下,我会得到列表,而不是地图或其他违反合同的情况。 例如: 我正在使用杰克逊将此响应映射到POJO。在某些情

  • 问题内容: 我正在尝试将json请求解析为模型。我不知道这段代码有什么问题。json的语法看起来正确,并且在Java模型上也有注释。我不知道为什么会出现如下错误: Java模型: 杰森代码: 问题答案: 您已声明为单个对象,但是将其作为JSON文档中多个对象的数组返回。 您的模型当前将parameters节点定义为一个对象: 这意味着您的模型对象需要一个如下所示的JSON文档: 但是在JSON文档