学习网络请求返回json对应的model
原来泛型可以这样用:
网络返回基类,返回一个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相关推荐
- ajax返回字符串怎么处理,ajax请求返回json字符串/json对象 处理
1. 返回json字符串如何处理 $.ajax({ url:xxx, success:function(date){ }, error:function(){ } }); 通过最原始的返回: Prin ...
- ajax绑值,AJAX请求,返回json进行页面绑值
前台代码: index.html 去往含有ajax的页面 点我! queryList.html AJAX请求,返回json进行页面绑值 var name = "测试"; //测试与 ...
- Flutter中的HTTP网络请求与JSON序列化
Http 请求 查阅Flutter的相关资料,关于网络请求库,既可以用 dart:io 包中提供的HttpClient,也可以用 flutterchina 推荐的三方封装的请求库 dio 来发起网络请 ...
- Flutter 笔记 | Flutter 文件IO、网络请求、JSON、日期与国际化
文件IO操作 Dart的 IO 库包含了文件读写的相关类,它属于 Dart 语法标准的一部分,所以通过 Dart IO 库,无论是 Dart VM 下的脚本还是 Flutter,都是通过 Dart I ...
- SSM+JSP+Bootstrap+Ajax小实例(员工CRUD系统)(五:员工查询前后端(请求返回json的方式))
原文再续,书接上回.上次我们讲了怎么把用户信息放到model里,然后用jsp+bootstrap做一个简单又不丑陋的界面去展示,但是现在讲究前后端分离,所以我们的接口返回一个json才是如今的王道,这 ...
- 使用jQuery发送POST,Ajax请求返回JSON格式数据
问题: 使用jQuery POST提交数据到PHP文件, PHP返回的json_encode后的数组数据,但jQuery接收到的数据不能解析为JSON对象,而是字符串{"code" ...
- HTTP网络请求返回状态码
HTTP状态码表示客户端HTTP请求的返回结果.标记服务器端的处理是否正常或者是出现的错误,能够根据返回的状态码判断请求是否得到正确的处理很重要. 平时在开发的时候,也能通过查看此状态码更快的获取的错 ...
- HTTP协议post请求返回json数据
有两种方式:大家详细看看,非常好用! import java.io.BufferedReader; import java.io.InputStream; import java.io.InputSt ...
- ajax返回数据输出成表,javascript代码实例教程-ajax请求返回Json格式数据如何循环输出成table形式...
小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过. 首先,Ajax请求数据,(用的是Jquery的Ajax) [javascript] $(function(){ ...
最新文章
- 专访:经历了时间检验的不仅是论文,还有唐杰自己 | SIGKDD 2020时间检验奖
- 判断鼠标点击在div外时,更改背景图片
- Too many fragmentation in LMT?
- ajax请求_重复的ajax请求让人很受伤
- 【Python】Python处理图像五个有趣场景,很实用!
- ITK:通过镜像填充图像
- ajax 中$.each(json,function(index,item){ }); 中的2个参数表示什么意思?
- linux下用脚本语言开发自动重启程序
- 计蒜客-最大子阵列 / NYOJ题目44-子串和
- 计算机加密是什么意思,bitlocker驱动加密是什么意思?
- Overpass Turbo下载OSM数据
- [4G5G专题-17]:需求-5G发展的主要驱动力
- 计算机网络是几级学科,教育部更新学科目录 “网络空间安全”增设为一级学科...
- 软件测试术语 - 需求跟踪矩阵
- HGDB单机问题解决—致命错误:已保留的连接位置为执行非复制请求的超级用户预留
- 为什么精英这样用脑不会累
- 安装sql 2008 express 企业管理器Management Studio
- 关闭联想台式机键盘的 Fn 功能
- 身份证号码验证(直接调用idCardValidate(String idCard) )
- 什么是架构即代码( Infrastructure As Code)
热门文章
- 下列有关mysql数据库中的null值_MySQL数据库中与 NULL值有关的问题
- linux操作系统教学,Linux操作系统教学视频
- python创建学生类和教师类_创建StudentServices类
- 4.QT4中的connect的实现
- bootstraptable设置行高度_条码打印软件中不干胶卷纸的标签设置方法
- VMware 滴滴声解决
- Determine destination location of apt-get install package?
- MVC使用 Elmah 日志记录组件
- cocos2d-x jsbinding 在线更新策略设计
- 自己动手写一个JQuery插件(第二篇)(转)