学习网络请求返回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的更多相关文章
- Android okHttp网络请求之Json解析
		前言: 前面两篇文章介绍了基于okHttp的post.get请求,以及文件的上传下载,今天主要介绍一下如何和Json解析一起使用?如何才能提高开发效率? okHttp相关文章地址: Android o ... 
- 在使用Ajax请求返回json数据的时候IE浏览器弹出下载保存对话框的解决方法
		在使用Ajax请求返回json数据的时候IE浏览器弹出下载保存对话框的解决方法 最近在做一个小东西,使用kindeditor上传图片的时候,自己写了一个上传的方法,按照协议规则通过ajax返回json ... 
- shiro异步请求返回JSON响应
		shiro异步请求返回JSON响应 需求1:当shiro请求资源,但是没有进行认证时,默认是进行重定向,现在需要返回JSON响应.注意异步请求,服务器重定向后,ajax拿到的是浏览器重定向后的到的页面 ... 
- AJAX请求,返回json进行页面绑值
		AJAX请求,返回json进行页面绑值 后台 controller @RequestMapping(value = "backjson.do",method=RequestMeth ... 
- Flutter网络请求与JSON解析
		本文介绍如何在Flutter中创建HTTP网络请求和对请求的json string进行类型解析. 网络请求 官方使用的是用dart io中的HttpClient发起的请求,但HttpClient本身功 ... 
- C#网络请求与JSON解析
		最新学校的海康摄像头集控平台(网页端)不能在win10里登录,我寻思着拿海康的c# demo直接改. 首先得解决权限问题,每个教师任教不同年级,只能看到自己所在年级的设备,涉及到登录,在此记录一下C# ... 
- iOS 自己封装的网络请求,json解析的类
		基本上所有的APP都会涉及网络这块,不管是用AFNetWorking还是自己写的http请求,整个网络框架的搭建很重要. 楼主封装的网络请求类,包括自己写的http请求和AFNetWorking的请求 ... 
- spring 4.x下让http请求返回json串
		当前很多应用已经开始将响应返回为json串,所以基于springframework框架开发的服务端程序,让响应返回json字符串成为了一种常用手段. 这里介绍一下如何在spring-MVC框架下方便快 ... 
- ajax请求返回json字符串/json对象 处理
		1. 返回json字符串如何处理 $.ajax({ url:xxx, success:function(date){ }, error:function(){ } }); 通过最原始的返回: Prin ... 
随机推荐
- Prestashop-1.6.1.6-zh_CN (Openlogic CentOS 7.2)
			平台: CentOS 类型: 虚拟机镜像 软件包: prestashop1.6.1.6 commercial content management ecommerce open-source 简体中文 ... 
- python_opencv应用系列1:图片读写
			opencv的读写非常简单,主要用到的就是imread和imwrite两个函数 读取图片示例 import cv2 #imread(filename[, flags]) -> retval im ... 
- react+webpack 引入字体图标
			在使用react+webpack 构建项目过程中免不了要用到字体图标,在引入过程中报错,不能识别字体图标文件中的@符,报错 Uncaught Error: Module parse failed: U ... 
- Linux 使用第三方邮箱发邮件的设置
			mail命令在Ubuntu下是需要安装的,使用下条命令进行安装: sudo apt-get install heirloom-mailx 在CentOS 下安装则是: yum install mail ... 
- Metasploitable渗透测试实战——生成木马
			攻击机:kali 目标机:windows 1.生成木马 wincap发送至本机 2.进入msf (命令:msfconsole)启动监听 3.当目标点击test.exe(可伪装)时,触发后门,实现入 ... 
- C#中RichTextBox字体不统一(中英文)
			this.richTextBox1.Font = new System.Drawing.Font("微软雅黑", 12F);// new System.Drawing.Font(& ... 
- 解决频繁自动弹出“QQ拼音升级程序”,可使用旧版QQ输入法
			QQ输入法(2017年9月6日版本)下载地址: http://dlc2.pconline.com.cn/filedown_90891_8506339/BZXMP3fp/QQPinyin_Setup_5 ... 
- Poj(1125),Floyd,
			题目链接:http://poj.org/problem?id=1125 多源点最短路中的,最长路的,最短路. 看到这里就懵逼了,解释一下,找到一个源点,使得路最短,(遍历源点),路最短怎么求呢? 就是 ... 
- maven没有servlet(创建servlet后报错)
			maven不能创建servlet 解决方案 方案一 在项目的iml进行指定根目录 <sourceRoots> <root url="file://$MODULE_DIR$/ ... 
- cudpp库使用说明
			所有信息是我个人在使用过程中的小小经验,不是什么权威性文档,旨在帮助需要研究此类信息的朋友少走点弯路. 整个项目的主函数,一切从这里开始 在cudpp_testrig右键属性页里找到调试,在命令行里输 ... 
