java.lang.IllegalStateException: Expected BEGIN_OBJECT but was was STRING at line 1 column 1

解析json字符串出现这个错误:

com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1

这是报的错误 这是我写的bean类 public class NewsJsonToBean { public String errNum; public GetNews retDa...


分析原因:
List<Person> ps = gson.fromJson(str, new TypeToken<List<Person>>(){}.getType());  
GSON提供了 TypeToken 这个类来帮助我们捕获(capture)像List<MyZhuiHaoDetailModel>这样的泛型信息。


不是我们这句代码错误了,是因为实际开发中,我们获取数据都是通过网络接口从服务器获取数据,这些数据的格式都是后台写的,这就存在了人为可能造成的数据错误。
图片:


注意这种后台回传的数据格式: 最外层还是“”--字符串,里面是[] --数组,但是数组中,又是“”--字符串,字符串中又是[],然后才是{},我们需要的字典。


解决方案:
参考资料:http://www.open-open.com/lib/view/open1472632967912.html

	//换这个方式
        //Json的解析类对象
        //将JSON的String 转成一个JsonArray对象
        JsonParser jsonParser = new JsonParser();
        JsonArray jsonArray = jsonParser.parse(str).getAsJsonArray();
        Gson gson = new Gson();

        //加强for循环遍历JsonArray
        for (JsonElement user : jsonArray) {
            //使用GSON,直接转成Bean对象
            Course userBean = gson.fromJson(user, Course.class);
            coursesList.add(userBean);
        }
	//这种方式不用
        //coursesList = gson.fromJson(str,new TypeToken<List<Course>>(){}.getType());


  
    

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值