android retrofit 实战自定义converter,解决相同接口返回不同数据的问题

本文介绍了在Android开发中使用Retrofit时遇到的同一个接口返回不同JSON格式的问题,以及如何通过创建自定义Converter来解决这个问题。通过在BaseBean中扩展字段,并在Converter中根据code值进行不同格式的解析,避免了泛型修改和Json解析异常。虽然这种方法存在局限性,如所有Bean需继承Base类,但为了解决服务器结构变化带来的问题提供了一种方案。
摘要由CSDN通过智能技术生成

square的retrofit是目前比较火的网络框架,我目前也在用

今天项目上遇到一个问题,就是请求同一个接口,可能返回不同的json格式

例如,访问一个登录接口,成功的时候,返回的是

{
    "code": 0,
    "message": "登录成功",
    "data": {
        "username": "xxx",
        "userId": "xxx"
    }
}

我们首先定义一个basebean

public class Base {

    public String message;
    public int code;

}

然后定义一个loginbean去接收数据

public class LoginBean extends Base{

        public LoginContent data;
        
        public class LoginContent {
            public String username;
            public String userId;
        }
        
    }

访问失败的时候,服务器自动转发了地址,返回服务器维护的提示

{
    "code": 1,
    "message": "服务器维护中",
    "data": {
        "title": "xxx",
        "content": "xxx"
    }
}

而我们通常用retrofit写接口,都是通过下面这种方式

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值