响应对象Response到底如何设计?

在接收第三方接口或者自己写的也好,当返回的是JSON字符串时,你是如何接收的呢?只要规范点,一般都会在Response类中定义如下三个属性:

public class Response<T> {
	/**
	* 注意T是泛型
	*/ 
    protected T data;
    protected Integer code ;
    protected String message;
}

加入接口返回的JSON字符串是这样的:

{"code": 200, "message": "成功", "data": null}

或者是这样的:

{"code": 200, "message": "成功", "data": []}
{"code": 200, "message": "成功", "data": {}}

注意data属性可能是null、数组、对象。然后使用JSON解析库:fastjson、gson,这些都是大同小异的,我就以fastjson为例。上面列出的三种情况fastjson都是可以正常解析的。但,如果接口返回的是这样的:

{"code": 500, "message": "服务器错误", "data": false}

或者

{"code": 400, "message": "参数错误", "data": 404}
{"code": 406, "message": "参数错误", "data": "这是字符串"}

注意data里面不是对象也不是数组,而是单个类型:布尔、数字、字符串的时候,使用fastjson来解析就会出现类型转换异常!

之所以出现这样的问题,还是因为接口返回不合理造成的。但是有时候我们并不能去改变他们什么,只好自己来做处理。解决办法就是data属性不能使用泛型,而是使用Object:

public class Response {
	/**
	* 注意是Object类型
	*/ 
    protected Object data;
    protected Integer code ;
    protected String message;
}

或者如果可能的话,作为架构的设计者,你应该限制data属性必须是数组或者是对象形式,不能其它基本数据类型(包括字符串)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

养-乐多

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值