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

GSON解析REST API响应报错:预期BEGIN_ARRAY却为BEGIN_OBJECT

Gson反序列化错误:Expected BEGIN_ARRAY but was BEGIN_OBJECT 问题分析

这个错误其实很好理解——你给Gson传递的反序列化类型和实际返回的JSON结构完全不匹配!

问题根源拆解

  • 你实际拿到的JSON根节点是一个对象(开头是{),它包含meta和objects两个属性,其中objects才是你要的数组。
  • 但你的代码里用了TypeToken<List<InstanceCreatorForAwsMarketplace>>,这相当于告诉Gson:“整个响应体是一个数组/List”,所以Gson一看到JSON开头的{就直接报错了——它本来等着[呢!

正确的解决方式

你已经通过jsonschema2pojo生成了对应整个JSON结构的AwsMarketplace类,这才是你应该用来反序列化根节点的类型,而不是直接用List。修正后的代码应该是这样:

Type localVarReturnType = new TypeToken<AwsMarketplace>(){}.getType();
ApiResponse<AwsMarketplace> responseFromApiClient = apiClient.execute(newCall, localVarReturnType);
// 之后要拿列表的话,直接从根对象里取
List<YourItemType> items = responseFromApiClient.getBody().getObjects();

这里的YourItemType就是你生成的Object类(建议给它改个更清晰的名字,比如AwsMarketplaceSubscription之类的,避免和Java自带的Object类混淆)。

额外提醒

检查下你生成的AwsMarketplace类,它应该包含:

  • 一个Meta类型的meta字段
  • 一个List<YourItemType>类型的objects字段
    这样Gson就能完美匹配整个JSON的层级结构,不会再出现类型不匹配的错误了。

内容的提问来源于stack exchange,提问作者JonB

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:35:03