• bug 自定义的json2bean的bug


    bug

    在json2bean中如果不进行转换  if(bean instanceof HttpLogin){,将调用的市父类的Json2Meß

    此并非最好的解决办法,应该用官方的json.toobject

    package com.xx.app.inspector.api;
    import android.content.Context;
    import com.lidroid.xutils.exception.HttpException;
    import com.lidroid.xutils.http.ResponseInfo;
    import com.lidroid.xutils.http.callback.RequestCallBack;
    import com.xx.app.inspector.model.Http;
    import com.xx.app.inspector.model.HttpLogin;
    import com.xx.app.inspector.utils.LogUtils;
    import org.json.JSONException;
    import org.json.JSONObject;

     

    public class HttpCallBack<T extends Http> extends RequestCallBack<String> {
        private Context mContext;
        public HttpCallBack(){}
        public HttpCallBack(Context context){
            this.mContext = context;
        }
        @Override
        public void onSuccess(ResponseInfo<String> responseInfo) {
        }
        @Override
        public void onFailure(HttpException e, String s) {
        }
        public T json2Bean(String result,T bean){
            try {
                JSONObject json = new JSONObject(result);
                if(bean instanceof HttpLogin){
                    HttpLogin h= (HttpLogin)bean;
                    h.json2Me(json);
                }else{
                    bean.Json2Me(json);
                }
                return bean;
            } catch (JSONException e) {
                e.printStackTrace();
            }
            return null;
        }
    }
    public class HttpLogin extends Http {
        private  final String TAG = "HttpLogin";
        
        public String userName;
        public Long userId;
        
        public Token token;
        
        public void json2Me(JSONObject jsonObj) throws JSONException{
            super.Json2Me(jsonObj);
            if(this.status == STATUS_SUCCESS){
                JSONObject body = jsonObj.getJSONObject("body");
                userName = body.getString("userName");
                userId = body.getLong("userId");
                LogUtils.d(TAG,"==="+userName);
                token= new Token();
                token.json2Me(body.getJSONObject("token"));
            }
        }
    }

      

    public class Http {
        
        /** 业务请求结果:成功*/
        public static final int STATUS_SUCCESS = 0;
        /** 业务请求结果:错误*/
        public static final int STATUS_ERROR = 1;
        
        public Integer status;
        public Integer code;
        
        public void Json2Me(JSONObject jsonObj) throws JSONException{
            JSONObject obj = jsonObj.getJSONObject("header");
            status = (Integer)obj.get("status");
            code = getInteger(obj,"status");
            code = getInteger(obj,"code");
        }
        
        
        
        protected Integer getInteger(JSONObject obj,String key) throws JSONException{
            return obj.isNull(key)?null:obj.getInt(key);
        }
        
        
        protected Long getLong(JSONObject obj,String key) throws JSONException{
            return obj.isNull(key)?null:obj.getLong(key);
        }
    }

     

  • 相关阅读:
    Node Sass version 5.0.0 is incompatible with^4.0.0
    Vue v-html 的使用
    SQL 判断时间是否为空
    Element UI 表单验证
    Mybatis-Plus根据条件更新
    语法检查工具 http://jshint.com/
    安装node_modules文件遇到的问题:更改代理
    知识点3: 学习中遇到的问题
    Vue: 用 key 管理可复用的元素
    Vue遇到的问题
  • 原文地址:https://www.cnblogs.com/stit/p/6368006.html
Copyright © 2020-2023  润新知