关于android:Retrofit响应解析建议

Retrofit response parsing suggestion

我在翻新模型类中解析JSON响应。

我的问题是,响应不是恒定的,这意味着有些时候它将带有2个参数,而有些时候会更多,

经验值:

第一个回应:

1
2
3
4
5
6
7
8
9
{
   "error": true,
   "data": {
       "order_id": [
           "Order Id does not exists"
        ]
    },
   "code": 500
}

第二反应:

1
2
3
4
5
6
7
{
   "error": false,
   "data": [
       "Order #P have sent successfully"
    ],
   "code": 200
}

因此,在第一个响应中,如果不存在订单ID,那么在响应中,我将获得order_id作为键,但是在第二个响应中,由于成功,我将不会获得。

***我可以通过要求后端人员更改响应来解决此问题,但是如果万一有其他前缀的api响应,如果我将得到这种结果,那么我将如何处理呢?


对于这种情况,您应该编写自定义Deserializer并检查data是数组还是jsonobject。

恕我直言,总的来说,使用同一密钥保存错误信息和非错误信息的想法很糟糕。


您可以像这样使用模型类:

1
2
3
4
5
6
7
public class ResponseModel {
    private boolean error;
    private int code;
    private JsonElement data;

    // Setters, getters, etc. ...
}

然后,您可以检查错误和代码值,并以自己喜欢的方式处理数据对象。 您提到的两种情况都适用于此模型。

当您知道内部有哪些数据时,甚至可以将此data变量序列化为另一个模型类。