当Gson解析遇到java关键词

2018-05-25  本文已影响48人  苍蝇的梦

2018-05-24 遇到的一点小问题
项目里和服务端约定的返回数据基本就三种
{ "code": 0,"msg": "success","data": {}}

{"code": 0, "msg": "success","data": []}

{"code": 0, "msg": "success"}
code为0时才去处理data数据,code不为0时,按具体代码处理异常,整个项目都差不多。所有的接口都必须统一上传三个参数。
不想在项目里复制太多代码,所以把网络请求简单整理了一下。
这样网络请求时只需使用具体的解析类型就可以获取数据了,有多余的参数要上传就加上自定义的HashMap,有需要处理的异常就重写onError(xxx)方法就行。

ToolsHttp.post(context, url, new HttpCallback<InfoMineAccount>() {
            @Override
            public void onSuccess( InfoMineAccount data) {
              
            }
});

上面是第一种数据处理;第二种就是HttpCallback<List<InfoMineAccount>>();第三种专门弄个HttpCallback,把type设置为null就可以了。虽然不清楚这样有没问题,但是省了很多复制代码的时间。
因为是使用的GsonConverter类里统一解析数据,所以遇到服务端把java关键词当成Json数据的key时就会比较麻烦了。比如这样的{"code": 0,"msg": "success", "data": {"default": {}}},当然这种问题网上一找很多解决办法,就是在你自定义的数据上注解@SerializedName("xxx")就可以了。

@SerializedName("xxx")
为什么网上一找很多解决办法,我还特地写一篇这个呢。因为今天改东西,看那句话,才隔了几个月就以为没用,给顺手删了,然后测试才发现出问题了。所以写一下加深记忆,顺便增加点简书字数。
再加点字数,感谢四木推荐的jeasonlzy/okhttp-OkGo。因为项目的README.md里有`Fiddler抓包泛型的相关介绍,对项目还是有些帮助的。
上一篇下一篇

猜你喜欢

热点阅读