原来泛型可以这样用:

网络返回基类,返回一个code,msg,body,其中body不确定,所以,我们把它写成泛型

import org.json.JSONObject;/*** 网络请求的基类* Created by  on 16/7/14.*/
public class NetData<T> {public static final int STATUS_OK = 0;public int code = -1;public String msg;public T body;/*** code码是否正确* @return*/public boolean isCodeOk(){return code == STATUS_OK;}public JSONObject getJSONBody(JSONObject data){if(data == null){return null;}return data.optJSONObject("body");}public JSONObject getJSONBody(String data){JSONObject jsonObj = convertStrToJSON(data);return getJSONBody(jsonObj);}public void parseHead(String json){JSONObject jsonObject = convertStrToJSON(json);if(jsonObject != null){parseHead(jsonObject);}}public void parseHead(JSONObject obj){try {if(obj == null){return;}code = obj.optInt("code");msg = obj.optString("msg");}catch (Exception e){e.printStackTrace();}}public JSONObject convertStrToJSON(String json){JSONObject jsonObject = null;try {jsonObject = new JSONObject(json);}catch (Exception e){e.printStackTrace();}return jsonObject;}
}

具体类:

public class PlugUpdateInfo {public boolean mNeedUpdate;public String mVersion;public String mDownloadUrl;public boolean mForcedUpdate;/*** 解析数据* @param jsonStr* @return true,解析成功;false解析失败*/public boolean parse(String jsonStr){JSONObject json = convertStrToJSON(jsonStr);return parse(json);}public boolean parse(JSONObject json){if(json == null){return false;}boolean needReflesh = json.optBoolean(Constants.NEED_UPDATE);String serverVersion = json.optString(Constants.VERSION);String mDownLoadUrl = json.optString(Constants.DOWNLOAD_URL);int  mforceUpdate = json.optInt(Constants.FORCED_UPDATAE); //强制更新,0:否,1:是this.mNeedUpdate = needReflesh;this.mVersion = serverVersion;this.mDownloadUrl = mDownLoadUrl;this.mForcedUpdate = mforceUpdate == 1?true:false;return true;}public JSONObject convertStrToJSON(String json){JSONObject jsonObject = null;try {jsonObject = new JSONObject(json);}catch (JSONException e){e.printStackTrace();}return jsonObject;}
}

组合:

NetData<PlugUpdateInfo> baseData = new NetData<PlugUpdateInfo>();baseData.parseHead(result);if(baseData.isCodeOk()){JSONObject jsonBody = baseData.getJSONBody(result);PlugUpdateInfo data = new PlugUpdateInfo();boolean success = data.parse(jsonBody);if(success){if(listener != null){listener.onRequestDataSuccess(data);}}else{if(listener != null){listener.onRequestDataFailed(-1, "");}}}else{if(listener != null){listener.onRequestDataFailed(baseData.code, baseData.msg);}}

学习网络请求返回json对应的model相关推荐

  1. ajax返回字符串怎么处理,ajax请求返回json字符串/json对象 处理

    1. 返回json字符串如何处理 $.ajax({ url:xxx, success:function(date){ }, error:function(){ } }); 通过最原始的返回: Prin ...

  2. ajax绑值,AJAX请求,返回json进行页面绑值

    前台代码: index.html 去往含有ajax的页面 点我! queryList.html AJAX请求,返回json进行页面绑值 var name = "测试"; //测试与 ...

  3. Flutter中的HTTP网络请求与JSON序列化

    Http 请求 查阅Flutter的相关资料,关于网络请求库,既可以用 dart:io 包中提供的HttpClient,也可以用 flutterchina 推荐的三方封装的请求库 dio 来发起网络请 ...

  4. Flutter 笔记 | Flutter 文件IO、网络请求、JSON、日期与国际化

    文件IO操作 Dart的 IO 库包含了文件读写的相关类,它属于 Dart 语法标准的一部分,所以通过 Dart IO 库,无论是 Dart VM 下的脚本还是 Flutter,都是通过 Dart I ...

  5. SSM+JSP+Bootstrap+Ajax小实例(员工CRUD系统)(五:员工查询前后端(请求返回json的方式))

    原文再续,书接上回.上次我们讲了怎么把用户信息放到model里,然后用jsp+bootstrap做一个简单又不丑陋的界面去展示,但是现在讲究前后端分离,所以我们的接口返回一个json才是如今的王道,这 ...

  6. 使用jQuery发送POST,Ajax请求返回JSON格式数据

    问题: 使用jQuery POST提交数据到PHP文件, PHP返回的json_encode后的数组数据,但jQuery接收到的数据不能解析为JSON对象,而是字符串{"code" ...

  7. HTTP网络请求返回状态码

    HTTP状态码表示客户端HTTP请求的返回结果.标记服务器端的处理是否正常或者是出现的错误,能够根据返回的状态码判断请求是否得到正确的处理很重要. 平时在开发的时候,也能通过查看此状态码更快的获取的错 ...

  8. HTTP协议post请求返回json数据

    有两种方式:大家详细看看,非常好用! import java.io.BufferedReader; import java.io.InputStream; import java.io.InputSt ...

  9. ajax返回数据输出成表,javascript代码实例教程-ajax请求返回Json格式数据如何循环输出成table形式...

    小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过. 首先,Ajax请求数据,(用的是Jquery的Ajax) [javascript] $(function(){ ...

最新文章

  1. 专访:经历了时间检验的不仅是论文,还有唐杰自己 | SIGKDD 2020时间检验奖
  2. 判断鼠标点击在div外时,更改背景图片
  3. Too many fragmentation in LMT?
  4. ajax请求_重复的ajax请求让人很受伤
  5. 【Python】Python处理图像五个有趣场景,很实用!
  6. ITK:通过镜像填充图像
  7. ajax 中$.each(json,function(index,item){ }); 中的2个参数表示什么意思?
  8. linux下用脚本语言开发自动重启程序
  9. 计蒜客-最大子阵列 / NYOJ题目44-子串和
  10. 计算机加密是什么意思,bitlocker驱动加密是什么意思?
  11. Overpass Turbo下载OSM数据
  12. [4G5G专题-17]:需求-5G发展的主要驱动力
  13. 计算机网络是几级学科,教育部更新学科目录 “网络空间安全”增设为一级学科...
  14. 软件测试术语 - 需求跟踪矩阵
  15. HGDB单机问题解决—致命错误:已保留的连接位置为执行非复制请求的超级用户预留
  16. 为什么精英这样用脑不会累
  17. 安装sql 2008 express 企业管理器Management Studio
  18. 关闭联想台式机键盘的 Fn 功能
  19. 身份证号码验证(直接调用idCardValidate(String idCard) )
  20. 什么是架构即代码( Infrastructure As Code)

热门文章

  1. 下列有关mysql数据库中的null值_MySQL数据库中与 NULL值有关的问题
  2. linux操作系统教学,Linux操作系统教学视频
  3. python创建学生类和教师类_创建StudentServices类
  4. 4.QT4中的connect的实现
  5. bootstraptable设置行高度_条码打印软件中不干胶卷纸的标签设置方法
  6. VMware 滴滴声解决
  7. Determine destination location of apt-get install package?
  8. MVC使用 Elmah 日志记录组件
  9. cocos2d-x jsbinding 在线更新策略设计
  10. 自己动手写一个JQuery插件(第二篇)(转)