You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用API获取数据时遇JSON解析错误:无法反序列化[xxx.Class;类型

JSON反序列化错误解决方案

问题核心

错误JSON parse error: Cannot deserialize value of type [xxx.Class; from Object value (token JsonToken.START_OBJECT)本质是数据结构不匹配:

  • 你的代码预期接收数组类型的返回值
  • 但实际API返回的是单个JSON对象(而非数组)

修复方案

根据你期望得到数组结果的需求,有两种可行处理方式:

方式1:调整API返回格式(若有权限修改API)

要求API返回数组结构,哪怕只有一条数据也要用数组包裹,示例格式:

[
  {
    "字段1": "值1",
    "字段2": "值2"
  }
]

方式2:修改本地代码接收逻辑

如果无法调整API,就把代码里的接收类型从数组改为单个对象,之后手动包装成数组:
比如原代码如果是:

xxx.Class[] result = restTemplate.getForObject(apiUrl, xxx.Class[].class);

改成:

// 先接收单个对象
xxx.Class singleData = restTemplate.getForObject(apiUrl, xxx.Class.class);
// 手动包装成数组
xxx.Class[] result = new xxx.Class[]{singleData};

也可以用JSON工具类手动转换:

// 先获取原始响应字符串
String rawResponse = restTemplate.getForObject(apiUrl, String.class);
// 把单个对象字符串包裹成数组格式
String arrayFormatResponse = "[" + rawResponse + "]";
// 反序列化为数组
xxx.Class[] result = new ObjectMapper().readValue(arrayFormatResponse, xxx.Class[].class);

验证步骤

  1. 调用API时先打印原始返回的JSON字符串,确认是单个对象还是数组
  2. 确保代码接收类型和API返回的JSON结构完全对应

内容的提问来源于stack exchange,提问作者Alejandro Veitia Ramos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 09:57:05