OKhttp封装 Json数据解析

简单写了个网络请求工具demo,方便以后新项目有网络需求快速搭建网络框架:

1.添加jar依赖:(可下载demo,从项目中拿,上传的是program,新建个项目导入即可)

这里写图片描述

  1. 配置build.gradle

这里写图片描述
这里写图片描述

3.AndroidManifest.xml配置网络权限

<uses-permission android:name="android.permission.INTERNET" />

4.之后就可有用了,有个简单的post请求范例,图片上传的工具里面有方法:
1)确保接口能用(我这个接口只是简单在我的服务器返回json数据);
2)封装好数据类型,以便json解析工具解析()

//数据类型封装
/**
 * Created by lilin on 2016/12/24.
 * func :
 */
public class BuzProfession {
    private String name;
    private String value;
    private int id;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getValue() {
        return value;
    }
    public void setValue(String value) {
        this.value = value;
    }
}
//参数初始化
private List<BuzProfession>  buzProfession = new ArrayList<>();
private static final String url = "http://113.105.131.249:27017/app/dict/getDepartments";
    //请求网路
    private void getInternetData() {
        HashMap map = new HashMap<String, Object>();
        map.put("type", 34);
        HttpHelper.post(url, map, new RequestListener() {
            @Override
            public void onResponse(String response) {
                Log.e("nxm", response);
                String code = JsonUtils.getFieldValue(response, "code");
                String codeResponse = JsonUtils.getFieldValue(response, "data");
                if ("200".equals(code)) {
                    //请求成功
                    parsejson(codeResponse);
                } else {
                    //清楚错误
                }
            }

            @Override
            public void onError(Request request, Exception e) {
                //请求异常
                Log.e("nxm", e.toString());
            }
        });
    }
  //解析数据
    private void parsejson(String codeResponse) {
        buzProfession = (List<BuzProfession>) JsonUtils.parseJsonToList(codeResponse, new TypeToken<List<BuzProfession>>() {
        }.getType());
        if (buzProfession.size() > 0) {
            textView.setText(buzProfession.get(0).getName());
        }
    }

模拟的返回数据:(连接百度网站是有数据,证明连接成功,然后用模拟的数据模拟解析过程)
这里写图片描述
{“code”:”200”,”data”:[{“name”:”外科”,”id”:55,”dictId”:3,”value”:”1”},{“name”:”内科”,”id”:56,”dictId”:3,”value”:”2”},{“name”:”儿科”,”id”:57,”dictId”:3,”value”:”3”},{“name”:”妇产科”,”id”:58,”dictId”:3,”value”:”4”},{“name”:”精神科”,”id”:59,”dictId”:3,”value”:”5”},{“name”:”口腔科”,”id”:60,”dictId”:3,”value”:”6”},{“name”:”耳鼻喉科”,”id”:61,”dictId”:3,”value”:”7”}]}

资源下载地址:
http://download.csdn.net/download/qq_38355313/10177551

发布了43 篇原创文章 · 获赞 9 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_38355313/article/details/78920480