美文网首页
Gson解析异常:Expected a BEGIN_ARRAY

Gson解析异常:Expected a BEGIN_ARRAY

作者: zizi192 | 来源:发表于2017-06-06 16:31 被阅读0次

    android开发中,经常需要与后台配合,从接口返回一些数据。一些数组类型的数据,后台数据库一般是字符串存储,某些接口人员不便于做转化时,会传入一些string类型的数据。gson解析时会抛异常:

    //json示例
    {
      array: "[1,2]"
    }
    //错误日志
    Expected a BEGIN_ARRAY but was STRING at line 1 column ...
    ......
    

    当武力值pk不过接口人员时,只能采用迂回的策略来解决了。方案如下:

    List<Integer> reasonList = GsonUtils.fromJson(jsonStr, 
                                                      new TypeToken<List<Integer>>(){}.getType());
    

    一切都是为了团队,就这样吧

    突然想起另一个妥协的案列,待序列化的类定义如下,包含一个int类型。

    public class RequestBean{
        public int id;
        ......
    }
    

    通过Gson的toJson方法序列化后,将序列化后的字符串作为入参向后台发起请求。此时,int类型的id有初始值0,序列化后为{id:0,...}。因为业务需要,后台接口需区分是否传入id作为筛选条件。此时为了客户端减少改动量,采用了一个讨巧的方案:将int改为Interger。一是利用java自动装箱和拆箱机制避免代码修改;二是Interger对象初始值为null,序列化后为“”。

    关于TypeToken的使用,还可参考另一篇文章Gson解析泛型对象时TypeToken的使用方法

    相关文章

      网友评论

          本文标题:Gson解析异常:Expected a BEGIN_ARRAY

          本文链接:https://www.haomeiwen.com/subject/kpxnfxtx.html