[HTTP那些事]JSON反序列化

上文中[HTTP那些事]JSON数据,我们提到,能否让我们的HTTP框架帮我们完成自动反序列化的操作。同时也给大家做了些提示:泛型和反射。

现在我们以Volley为例:

在Volley中有三种Request:FileRequest,StringRequest,ImageRequest。

JSON数据也是字符串,所以我们要重写StringRequest中的部分方法就可以咯。

看下StringRequest源码,你会看到解析服务器byte[]到String的是parseNetworkResponse(NetworkResponse response),解析完String直接就return给外层了。

这里我们也采用相同的方式,创建一个GsonRequest< T >继承Request< T >, 至于实现,先把StringRequest的代码copy过来。唯一不同的是,StringRequest因为指定返回String类型数据所以不需要泛型。

在parseNetworkResponse(NetworkResponse response)中,我们引入gson来反序列化json string,T的class怎么办呢?你可以通过外层显式的传进来或者通过反射来拿类上的泛型T的type。两种都可以。

具体到代码:

这里写图片描述

扩展完毕,你只需要new GsonRequest,声明好泛型T,等待接收t对象回调就好啦。

这里写图片描述

如果你想知道这种扩展是如何一步步推导出来的,可以看Stay录的专题视频。
传送门:预处理服务器返回的数据(JSON转对象)

像这样的扩展还有很多,框架不是万能的,要合理的根据自己的需求定制你想要的框架。

最后,留个问题给大家,如果是服务器返回了1M的JSON数据,还能用上述扩展么?如果不可以,那该怎么办呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值