如何解决后台传回的数据不是正常的json数据,例如是个List [ ]

最近做毕设碰到一个问题,我访问的接口,传回来的数据是 [{},{},{}]这个类型,还有[[{},{}],[{},{}]] 这个类型。

一开始没有注意,直接用Android studio 的插件GsonFormate。直接运行之后报错。

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

意思大概是说:期待的是个BEGIN_OBJECT类,但是得到的却是个BEGIN_ARRAY类。然后我试遍了谷哥和度娘的方法,还是没有解决。我差点觉得我要毕不了业了。

于是。。。我去上了个厕所(好吧,跟这个没有关系)回来之后,我决定操作一下,把返回的数据强行改成BEGIN_OBJECT类,也就是常规的JSON数据格式。

对于第一个类型[{},{},{}]

 json = "{\"rows\":"+json+"}";

就是在外面加上{} 然后在加上“rows”: 就可以了

我正准备性高彩烈的准备做下一个功能,但是我居然发现,上面哪个方法不行了。我就奇了怪了。然后用postman一测试,发现饭后返回的数据居然是[[{},{}],[{},{}]] ,对于后台我真的是****口吐芬芳。对于第二个类型[[{},{}],[{},{}]] 于是这么处理了。

 String processData =json.substring(0,json.indexOf("[{"))
                        + "{\"curriculum\":"
                        +json.substring(json.indexOf("[{"),json.indexOf(",["))
                        +"},{\"data\":"
                        +json.substring(json.indexOf(",[")+1,json.indexOf("]]")+1)
                        +"}"
                        +json.substring(json.indexOf("]]")+1);
                json = "{\"raw\":"+processData+"}";

这里用到分割字符串的办法。substring(起始位置,终点位置);substring(起始位置)【没有终点就默认到尾】

 

PS:以上的方法具有很高的局限性和不灵活性。但是我也冇得办法,真的搞了一天。我也纳闷。如果有大神路过不慎点到这篇文章,请多多指教。我定俯身侧耳以请的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Q-CODER

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值