Android开发Android开发经验谈Android技术知识

解析网络请求到的json数据

2018-08-07  本文已影响22人  8848钛金手机

使用okhttp的 post请求得到json数据, 那么怎么去把这组json数据解析出来呢?
首先使用okhttp去post请求到数据


点击事件以后   
{
//创建网络处理的对象

OkHttpClient client =new OkHttpClient.Builder()

.readTimeout(5, TimeUnit.SECONDS)

.build();

//post请求来获得数据

//创建一个RequestBody,存放重要数据的键值对

RequestBody body =new FormBody.Builder()

.add("*********", "**********")//(****)为某个App接口文档里的数据(必填)

.add("**********", "*********").build();

//创建一个请求对象,传入URL地址和相关数据的键值对的对象

Request request =new Request.Builder()

.url("*************************")//App接口文档的网站名(必填)

.post(body).build();

//创建一个能处理请求数据的操作类

Call call = client.newCall(request);

//使用异步任务的模式请求数据

call.enqueue(new Callback() {

@Override

    public void onFailure(Call call, IOException e) {

     Log.e("TAG", "错误信息" + e.toString());


    }


@Override

    public void onResponse(Call call, Response response)throws IOException {

    Log.e("TAG", response.body().string());

});


然后得到一组json数据  如果感觉格式看着有点乱,就把它复制到在线json检验格式化工具里格式化一下


{

"success": "1",

"dz": {

"company_id": "10",

"title": "wecan",

"is_complete": "1"

},

"dy": {

"user_id": "12",

"is_complete": "1"

}

}


定义一个类,声明json里面的数据 (类名自定义)


public class LoginResp {

private Stringsuccess;

    private Dzdz;

    private Dydy;

    public StringgetSuccess() {

return success;

    }

public void setSuccess(String success) {

this.success = success;

    }

public void setDz(Dz dz){

this.dz = dz;

    }

public DzgetDz(){

return dz;

    }

public void setDy(Dy dy){

this.dy = dy;

    }

public DygetDy(){

return dy;

    }

}


再定义一个Dz类 (类名自定义)


public class Dz {

private int company_id;

    private Stringtitle;

    private int is_complete;

    public void setcompany_id(int company_id){

this.company_id = company_id;

    }

public int getCompany_id(){

return company_id;

    }

public void setTitle(String title){

this.title = title;

    }

public StringgetTitle(){

return title;

    }

public void setIs_complete(int is_complete){

this.is_complete = is_complete;

    }

public int is_complete(){

return is_complete;

    }

}


再定义一个Dy类 (类名自定义)


public class Dy {

private int user_id;

    private int is_complete1;

    public void setUser_id(int user_id){

this.user_id = user_id;

    }

public int getUser_id(){

return user_id;

    }

public void setIs_complete1(int is_complete1){

this.is_complete1 = is_complete1;

    }

public int getIs_complete1(){

return is_complete1;

    }

}


在onResponse方法里写以下代码


String json = response.body().string();

LoginResp loginResp =new Gson().fromJson(json,LoginResp.class);

System.out.println("success: "+loginResp.getSuccess());

System.out.println("company_id: "+loginResp.getDz().getCompany_id());

System.out.println("title: "+loginResp.getDz().getTitle());

System.out.println("is_complete: "+loginResp.getDz().getCompany_id());

System.out.println("user_id: "+loginResp.getDy().getUser_id());

System.out.println("is_complete1: "+loginResp.getDy().getIs_complete1());


注意:写完解析json数据的代码后,把Log.e("TAG", response.body().string()); 这行代码注释掉,

不然程序会闪退。


运行结果:


System.out: success: 1

System.out: company_id: 10

System.out: title: wecan

System.out: is_complete: 10

System.out: user_id: 12

System.out: is_complete1: 0

上一篇下一篇

猜你喜欢

热点阅读