RxHttp 介绍篇之Parser介绍(三)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liujingxing93/article/details/86629896

简介

数据解析器Parser在RxHttp担任着一个很重要的角色,它的作用的将Http返回的数据,解析成我们想要的目标对象,可以是单一的对象,也可以是集合对象,甚至基于此,我们可以轻松完成下载操作;目前RxHttp提供的解析器都是基于Json解析的,如果要使用DOM等其它解析方式,我们可以通过自定义解析器去实现。

如果还未看过之前的文章,请移步
RxHttp 一条链发送请求,新一代Http请求神器(一)
RxHttp 介绍篇之生命周期、公共参数相关配置(二)
RxHttp 介绍篇之Parser介绍(三)
RxHttp 介绍篇之Param介绍(四)
RxHttp 介绍篇之多请求串行与并行(五)
RxHttp 扩展篇之Parser扩展(六)
RxHttp 扩展篇之Param扩展(七)
RxHttp 扩展篇之注解处理器 Generated API(八)

正式开始,首先我们先看看Parser的内部结构

public interface Parser<T> {

    /**
     * 数据解析
     * @param response Http执行结果
     * @return 解析后的对象类型
     * @throws IOException 网络异常、解析异常
     */
    T onParse(@NonNull Response response) throws IOException;

}

可以看到,Parser就是一个接口类,并且里面只有一个方法,它的作用就是拿到Http执行结果的Response对象,拿到里面的数据解析成自己所期望的数据类型。
它有一个抽象实现类AbstractParser,以及三个具体实现类SimpleParser、ListParser、DownloadParser,接下来我们一一讲解

SimpleParser

SimpleParser可以将Http返回的结果,用Json解析成我们的目标对象,即我们传入的泛型对象
在这里插入图片描述
SimpleParser也是继承AbstractParser,但并未传入具体的泛型,而是由调用者传入,这就是为什么我们能拿到自己所期望的数据类型;在这,有人会有疑问AbstractParser里面都有什么,其实它里面只有3个方法,分别是getResult和getActualTypeParameter方法,它并没有实现onParse方法,这个就不贴代码了

ListParser

ListParser的作用是,将Http返回的结果,用Json解析成List<T>对象
在这里插入图片描述

DownloadParser

DownloadParser的作用是将Http返回的输入流写到文件中,即文件下载
在这里插入图片描述
DownloadParser直接实现Parser接口,从Response中拿到输入流并写出到目标文件,最后返回目标文件路径。

到这,RxHttp默认提供的3个解析器已介绍完毕,现实开发中,每个人遇到的开发需求都不一样,有的可能需要用Json解析,有的用DOM或者其他的解析方法,更有的可能需要对返回值先解密再解析等等,这些涉及到业务需求的,就需要我们自己去实现Parser接口,生成符合自己业务需求的解析器

猜你喜欢

转载自blog.csdn.net/liujingxing93/article/details/86629896