最近 为了更新网络请求用上了OKHTTP 解析 JSON字符串也换成了 GSON 不得不说 代码量省了太多了,
但这两个集合起来封装 着实坑我了一天。
首先简单说一下我的网络请求封装 , 先看下网络请求的方法
需要的参数 注释 已经解释过了。 然后 坑爹的部分就来了
Gson 解析 数据的方式 就不多说了 网上的大神写的都很好 ,我就说说我碰到的BUG 以便给各位提供参考
gson.fromJson(response.body().string() ,UploadHchoData.class );
这个方法 就是 传递 JSON 字符串 跟 一个类, 但是这个方法 在这里解析的时候 返回的一般都是空而且无法封装
我用的是如图上的方法 用TYPE 代替CLASS ,typetoken是外部传递的 参数 格式如下
new TypeToken<UploadHchoData>(){}UploadHchoData 是实体类 这样的好处是, 如下图
当你拿到后台返回的JSON字符串结构的时候 新建一个BEAN 类 在这个类中快捷键 ALT+S
点击OK就会为你自动生成一个符合 当前JSON 的实体类 再也不用 头疼的去测试 后台返回的数据结构是不是符合标准了 ~~
当然别忘了在 IDEA 中 下载 GSONFORMAT 插件哦
接下来就是我遇到的困扰我一天的BUG 在 下边的方法中
@Override public void onResponse(Response response) throws IOException {我进行了GSON 的解析 但是返回的实体类一直都是空 到了最后的最后 我才发现
不能再次方法中 执行System.out.println()方法 。。。如果你写了 那么 GSON 解析后的值肯定是NULL。。。