欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY

程序员文章站 2024-01-28 16:53:28
...

今天在读取本地【assets文件下的.json】数据并用Gson解析解析时报了以下错误。

Caused by: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2 path $

【JsonSyntaxException:Json数据解析异常】
【BEGIN_OBJECT but was BEGIN_ARRAY:期望返回一个对象但是返回了一个数组】

原代码:
JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY
解决办法:


//这是我读取.json文件,数据已经读取到
String strJsonData = getJson( mContext,"bankname.json");
//确保本地bean类封装成集合  用TypeToken转一下
List<BankData.DataBean> data = fromToJson(strJsonData,new TypeToken<List<BankData.DataBean>>(){}.getType());

// An highlighted block
public  <T> T fromToJson(String json, Type listType){
        Gson gson = new Gson();
        T t = null;
        t = gson.fromJson(json,listType);
        return t;
    }

????另外在解决问题时也总结了以下可能报这种错误的情况:

  • 1、bean类字段类型和请求数据字段类型不一致。

  • 2、服务器访问得到的字符串不是纯json前面有空格和回车等字符。

  • 3、如果访问的json字符串不是utf-8编码时,用Gson解析会出这种问题,在日志中打印会发现json的{}前面有乱码字符,也需要注意一下。这是因为不同的编码的原因导致的,因此必须访问utf-8的json字符串,才会减少这种问题。

。。。解决呐可以直接让后台大哥给改一下或者自己解决。。。

相关标签: 平时错误积累