JSON Expected BEGIN_OBJECT but was BEGIN_ARRAY

遇到'JSON Expected BEGIN_OBJECT but was BEGIN_ARRAY'错误通常是由于尝试将JSON数组解析为对象导致的。内容提到两种解决方法,包括调整解析逻辑或请求后台修改返回数据格式。建议检查JSON字符串和解析代码,确保匹配正确的数据结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

此问题一般是json目标是一个数组 然后解析过程中给当成了object
返回的json字符串一般类似于是

[
   {
      "updated_at":"2012-03-02 21:06:01",
      "fetched_at":"2012-03-02 21:28:37.728840",
      "description":null,
      "language":null,
      "title":"JOHN",
      "url":"http://rus.JOHN.JOHN/rss.php",
      "icon_url":null,
      "logo_url":null,
      "id":"4f4791da203d0c2d76000035",
      "modified":"2012-03-02 23:28:58.840076"
   }
 ]

以上这种情况 如果直接用AS中的GSonformat来解析 会生成一个数据bean,然后用Gson直接来解析 会报错

解决方法1

    Gson gson = new Gson();
    TYPE[] enums = gson.fromJson(jsonStr, TYPE[].class);

解决方法2

    Gson gson = new Gson();
    jsonStr=jsonStr.substring(1, sjsonStrlength()-1);
    TYPE[] enums = gson.fromJson(jsonStr, TYPE[].class);

还有就是可以找后台把返回的数据给你改下就成,这也是最简便的方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值