Gson解析异常:Expected a BEGIN_ARRAY but was STRING at line 1 column ...

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的使用方法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,062评论 19 139
  • 1.概述2.Gson的目标3.Gson的性能和扩展性4.Gson的使用者5.如何使用Gson 通过Maven来使用...
    人失格阅读 14,859评论 2 18
  • JAVA序列化机制的深入研究 对象序列化的最主要的用处就是在传递,和保存对象(object)的时候,保证对象的完整...
    时待吾阅读 13,756评论 0 24
  • 今天特此记录一个重大bug,今天在请求接口的时候,用的retrofit的网络框架,在电脑上请求可以成功,代码部署到...
    Victory_IT阅读 8,751评论 0 1
  • 各位亲爱的的学兄,大家晚上好,今天是8月23日,与大家分享《正念的奇迹》一行禅师的著作。 你手中的杯子。 ...
    雅璇阅读 1,859评论 0 0

友情链接更多精彩内容